STM32 SPI控制器
一、SPI介绍SPISerial Peripheral Interface总线是一种用于在微控制器和外部设备之间进行串行通信的同步通信协议。它通常用于 连接微控制器与外部设备如传感器、存储器、外部ADC等。二、SPI通信引脚SPI 总线通常由四根线组成包括SCK、MOSI、MISO、NSS/CS。SCK(Serial Clock)由主设备通常是微控制器提供时钟信号用于同步数据的传输。MOSI(Master Out-Slave In)主设备将数据发送到从设备的线路。MISO(Master In-Slave Out)从设备将数据发送到主设备的线路。CS(Chip Select)用于选择特定的从设备进行通信。当片选线被拉低时表示从设备被选中可以进行通信当片选线被拉高时表示通信结束或者没有从设备被选中。三、数据传输原理通信始终由主器件发起。当主器件通过MOSI 引脚向从器件发送数据时从器件同时通过 MISO引脚做出响应。这是一个数据输出和数据输 入都由同一时钟进行同步的全双工通信过程。如果只是进行写操作主机只需要忽略接收到的字节即可如果主机只是进行读操作必须发送 数据来引发从机的传输。在SPI 通信中主设备(主器件)指的是SPI 总线上的主控制设备主设备负责控制通信时序、数据发送和接收的速度、通信发起等等。 从设备(从器件)指的是SPI 总线上的从机从设备只能被动地响应主设备的指令并按照主设备的时钟信号进行数据传输。通SPI_CR1 寄存器下的MSTR位进行模式的选择。四、SPI的传输方式SPI 总线有三种传输方式全双工、半双工以及单工传输1.全双工传输2.半双工传输在同一时刻只能为一个传输方向。将SPI_CR1寄存器中的BIDIMODE位置1来 使能SPI 的半双工模式。然后通过SPI_CR1寄存器下的BIDIOE位来选择数据传输的方向(输入/输出)。 SPI_CR1. BIDIOE 置1则是进行数据的发送SPI_CR1. BIDIOE 清0则是进行数据的接收。在SPI 的半双工通信模式下SCK用于时钟输出MOSI信号线(主模式下)或MISO信号线(从模式下)用于数据传输。3.单工传输在同一时刻只有一个传输方向只能发送或者是只能接收。通过SPI_CR1.BIDIMODE和SPI_CR1.RXONLY来控制 使用只发送或者是只接收模式。五、时钟频率SPI 通信是一种同步通信意味着数据的传输需要在主设备和从设备之间保持同步。根据时钟信号设备得以在正确的时机发送和接 收数据从而确保数据传输的有效性以及数据传输的速度。时钟信号由主设备产生通过SCK引脚输出主从设备的通信便根据SCK上 的时钟信号进行数据收发。SPI 控制器挂载在APB2时钟总线上使用的是APB2时钟总线提供的时钟SPI 控制器自身还有一个时钟分频器用于将APB2总线 上的时钟进行一定系数的分频后在进行输出。时钟的分频系数由SPI_CR1寄存器中的BR 位控制。那么主设备提供的时钟频率是不是越快越好呢当然不是还得考虑从设备最快可以接受多快频率的时钟。例如TMP125传感 器能接受的最快时钟频率就是10MHz所以主设备分频后的时钟频率就不能超过10MHZ。六、时钟极性和时钟相位时钟极性CPOLClock Polarity简称CPOL就是时钟极性当主从设备之间没有数据传输的时候SCK时钟线的电平状态(即空闲状态)。当CPOL 1 时则SCK线空闲状态下是高电平当CPOL 0 时则SCK线空闲状态下是低电平。时钟相位CPHAClock Phase简称CPHA就是时钟相位。CPHA实际指的就是数据的采样时刻CPHA 0 时则表示数据的采样是从时钟的第一 个边沿CPHA 1 时则表示数据的采样是从时钟的第二个边沿。七、实验

相关新闻