Lamdeli

SPI通讯学习

0
阅读(1074)

SPI的硬件接口组成:

(1)NSS:片选信号。

(2)SCK:同步通信时钟。

(3)MISO:主设备输入,从设备输出。

(4)MOSI:主设备输出,从设备输入。

简要说明:SPI全称是串行外设接口(Serial Peripheral Interface),是由Motorola提出的一种全双工同步串行通信接口。通讯由一个主设备和一个或多个从设备组成。通讯进行时,先由主设备发出NSS片选信号选中一个从设备。主设备向从设备发出SCK同步时钟信号,在SCK的速率下进行通讯。即主设备和从设备必须设定为相同的SCK频率才能保证通讯成功。数据可在MISO和MOSI中按规定的方向同时传送,即能实现全双工通讯。

 

SPI的通讯时序:

根据STM32系列处理器的SPI外设,SPI的通讯时序根据CPOL和CPAL的设定有四种。

CPOL:时钟空闲时刻的极性。即发送数据前和发送数据后SCK的极性。

CPAL:数据采样时的相位。

 

CPOL=0,表示发生数据传输前,SCK的空闲极性为0。

CPOL=1,表示发生数据传输前,SCK的空闲极性为1。

CPAL=0,表示数据的采样发生在空闲时钟后第1个时钟跳变边沿。若CPOL=0,数据采样的时刻为SCK的上升沿;若CPOL=0,数据采样的时刻为SCK的下降沿。

CPAL=0,表示数据的采样发生在空闲时钟后第2个时钟跳变边沿。若CPOL=0,数据采样的时刻为SCK的下降沿;若CPOL=1,数据采样的时刻为SCK的上升沿。

因此,在实际应用时,无论是主机还是从机,读数据发生在CPOL和CPAL组合确定的时钟边沿。而写数据时,一般在CPOL和CPAL组合确定的时钟边沿,下一个时钟沿改写数据。举例,若要编写CPOL=0,CPAL=0的SPI通讯程序,读数据应在SCK的上升沿。改写数据应在SCK的下降沿。

以下是图文说明:

image.png


参考资料来源网址:

https://www.crifan.com/detailed_spi_in_the_polarity_cpol_and_cpha_phase_of_what_is_and_how_to_set/