1 SPI简介
- SPI协议是一种高速、全双工的同步串行通信总线,与IIC的通过从设备地址选择从机相比,SPI是通过与从设备的CS片选来确定与哪一个从机通信,同一时间只能有一个SPI从设备处于工作状态,即多个CS信号中某时间内只能有一个有效。SPI 接口通常由四根线组成,分别是提供时钟的 SCLK,提供数据输出的 MOSI(Master Out Slave In),提供数据输入的 MISO(Master In Slave Out)和提供片选信号的 CS。为了适配不同的从机,SPI支持通过寄存器来配置时钟信号极性以及相位。
2 SPI硬件连接
- SPI支持slave和master两种模式,对于MCU或者MPU来说,通常是作为master;如上图所示,master通过ss片选选择不同的从机设备。
3 SPI通讯协议
-
SPI支持不同的SPI时钟信号极性以及相位,总共有4个模式,通过设置POL和PHA值的不同来设置相位和极性。POL表示SPICLK的初始电平,0为低电平,1为高电平;CHA表示相位,即在第一个还是第二个时钟沿采样数据,0代表在第一个时钟沿采样,1表示在第二个时钟沿采样。
-
在master模式下,SS、SCLK、MOSI作为信号输出接口,而MISO作为数据输入接口,通过片选信号使能SPI设备,SCLK用于同步数据的传输,下图为工作在模式1的情况下SPI通信图,即初始时钟为低电平,在第二个时钟沿采样数据,输出数据为0xD2,输入数据为0x66。
4 SPI模式选择
- 实际时钟和相位的关系如下图所示,我们常用的是模式0和模式3,因为他们都是在时钟的上升沿采样数据,而不必关系时钟的初始电平 为多少。