SPI是器件的比较常用的通信协议。
SPI总共有四根线:
SS:片选线,每个设备都和主机MCU有一条单独片选线相连,片选线拉低意味主机输出,也就是说一个主机可以和多个从机相连,只需要有足够多的片选线。
SCK:时钟线,SPI捕获数据是在时钟的跳变沿(可以设置是在奇数沿还是在偶数沿)。
MOSI::输出线
MISO:输入线
SPI有四种模式:这四种模式靠时钟极性(CPOL)和相位(CPHA)决定。CPOL=0,时钟在空闲为低电平,CPOL=1,时钟在空闲时为高电平。CPHA为0,奇数边沿采样,CPHA为1,偶数边沿采样。2*2为4,故有四种模式。
SPI分主机和从机,不论读写还是发送总是主机主动开始发起通信。
底层的SPI读写驱动都是读和写封装在一起,先读后写,读写和接收用同一个函数搞定。如下:
Stm32的硬件SPI有DR数据寄存器,你把数据放到发送DR里,硬件就会自动生成波形。同样,想要读数据的话就去读取接受DR就行了,而不必考虑波形