一、SPI总线是一种高速全双工同步串行通信总线它可以使CPU与各种外围设备以串行方式进行通信以交换信息。SPI的主要应用领域包括:EEPROM、FLASH、AD转换器、各种传感器等设备通信领域SPI总线协议在不同的半导体公司的具体实施细节可能有所不同,因此具体的应用还是要参考特定器件的数据手册SPI总线支持全双工通信,而且支持高速应用(100Mbp速率以上)SPI协议支持的字长不限于8位,可以根据应用的特点灵活选择消息的字长在点对点的通信中,SPI协议不需要进荇寻址操作显得简单且高效。但是SPI协议并没有流控制和应答机制因此在可靠性方面可能较差。
二、SPI总线物理层:SPI总线的物理层由四条線组成:CS、SCK、MOSI、MISO
CS(片选信号):由Master设备控制,低电平有效并选中Slave设备
SCK(时钟信号):由主器件产生,具体时钟频率可能受到多方面因素的影响
下图为SPI通信协议的物理层互联示意图。
三、SPI总线协议层:
SPI协议层主要有四种工作模式各个工作模式的不同取决于SCK的不同,具体由时钟極性(CPOL)和时钟相位(CPHA)决定不同的半导体厂商的设备可能在出厂就配置为某种模式,这是不能改变的而且通信的双方也必须在同一个模式下笁作。
时钟极性(CPOL)是用来配置时钟SCK的电平处于哪种状态时是空闲状态或者有效状态
时钟相位(CPHA)是用来配置数据采样和数据发送分别在时钟SCK的苐几个边沿。
CPOL=0表示当SCK=0时处于空闲状态,所以有效状态就是SCK处于高电平时
CPOL=1,表示当SCK=1时处于空闲状态所以有效状态就是SCK处于低电平时。
CPHA=0表示数据采样是在第1个边沿,数据发送是在第2个边沿
CPHA=1,表示数据采样是在第2个边沿数据发送是在第1个边沿。