串行外设(SPI) :接口是一种全双工同步串行外设,只允许嵌入式处理器与各种外围设备以串行方式进行通信,数据交换。基于SPI接口的外围设备主要包括Flash RoM,RAM,A/D转换器,网络控制器,MCU。



一般使用四根线:

串行时钟线SCK,

主机输入/从机输出数据线MISO,

主机输出/从机输入数据线MOSI,

低电平有效的从机选择线SSEL,



工作原理 :

SPI基本结构相当于两个8位移位寄存器的首位相接,构成16位的环形移位寄存器。从而实现了主机与从机的数据变换。

 

STM32cubemx spi从机_函数




时钟信号的相位和极性 :

SPI_CR寄存器的CPOL和CPHA位,能够组合成四种可能的时序关系。

CPOL 决定SCK的有效脉冲方式(正脉冲,负脉冲),

CPHA决定数据线MOSI什么时候输出数据或采集数据。

 

STM32cubemx spi从机_库_02



SPI主模式通信 :

配置步骤 :

1.通过SPI_CR1寄存器的BR[2:0]位定义串行时钟波特率.

2.选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系.

3.配置DFF位来定义8位或16位数据帧格式.

4.配置SPI_CR1寄存器的LSBFIRST位定义帧格式.

5.如果NSS引脚需要工作在输入模式,硬件模式中在整个数据帧传输检查间应把NSS脚连接到高电平.在软件模式中,需设置SPI_CR1寄存器的SSM和SSI位.如果NSS引脚工作在输出模式,则需设置SSOF位.

6.必须设置MSTR和SPE位(只当NSS脚被连到高电平,这些位才能保持置位).

在这个配置中,MOSI脚是数据输出,而MISO是数据输入.




数据发送过程:

1. 当一字节写进发送缓冲器时,发送过程开始.

2. 再发送第一个数据位时,数据字被并行地(通过内地总线)传入移位寄存器,而后串行地移出到MOSI脚上:MSB在先还是LSB在先,取决于SPI_CR1寄存器中的LSBFIRST位.数据从发送缓冲器传输到移位寄存器时TXE标志被置位,如果设置SPI_CR1寄存器中的TXEIE位,将产生中断.

3. 在试图写发送缓冲器之前,需确认TXE标志应该是1.



数据接收过程:

当数据传输完成时:

1. 移位寄存器里的数据传送到接收缓冲器,并且RXNE标志被置位。如果SPI_CR2寄存器中RXEIE位被设置,则产生中断。

 

2. 读SPI_DR寄存器时,SPI设备返回接收到的数据字。读SPI_DR寄存器将清楚RXNE位。

 

 

未完待续 。。。。。