串行外围接口SPI(Serial Peripheral interface)
参考资料:《STM32不完全手册_库函数版本_V3.3》、《STM32中文参考手册_V10》侵删
SPI使一种高速的,全双工的,同步的通信总线。
芯片管脚上只占用4根线:MISO,MOSI,SCLK,CS
MISO 主设备数据输入,从设备数据输出。
MOSI 主设备数据输出,从设备数据输入。
SCLK 时钟信号,由主设备产生。
CS 从设备片选信号,由主设备控制。
SPI与其他通信方式最不同的就是,主机的移位寄存器将其中的内容通过MOSI线发送给从机的同时,从机的移位寄存器也将其中的内容通过MISO线发送给主机,从而实现两个移位寄存器数据的交换(数据输出和数据输入是用同一个时钟信号同步的)。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。
根据输出外设的不同,串行同步时钟的时钟极性(CPOL)以及时钟相位(CPHA)要进行相应的调整。
CPOL=0时,串行同步时钟在空闲的时候为低电平,在一个时钟周期内,有两个跳变沿,第一次为上升,第二次为下降;CPOL=1时同理。CPHA用于控制在第几个跳变沿采集数据,CPHA=0时在第一个跳变沿时数据被采样;CPHA=1时在第二个跳变沿时数据被采样。
SPI的初始化
- 通信方式:半双工,全双工,串行发,串行收
- 主/从模式
- 数据格式:8位还是16位帧;MSB在前还是LSB在前
(MSB:最高有效位;LSB:最低有效位;若MSB在前,表示数据最高位先被传输;反之同理) - 时钟极性及采样方式:设置CPOL及CPHA
- 时钟频率
- CRC校验多项式:提高通道可靠性,大于1即可
- NSS位设置:有硬件控制还是软件控制
后续更新