SPI全名串行外设接口,是一种高速的、全双工、同步的串行通信总线。SPI采用主从方式工作,一般有一个主设备多个从设备,至少需要4根线,分别为SCLK,MOSI,MISO,CS。SCLK就是时钟线,和IIC总线上的一致。MOSI(Master Output Slave Input )就是主机发送数据,从机接收数据的线。MISO(Master Input Slave Output)就是主机接收数据,从机发送数据的线。CS(Chip Select)片选线,用于寻址。
1. 寻址方式
SPI总线在进行数据传送时先传送高位再传送低位,在传送完一个字节数据后无需应答就可以继续。SPI总线没有起始信号,没有停止信号,也没有应答信号,只有数据信号。SPI总线采用同步工作原理,与IIC不同的是,它是在时钟线上升沿或者下降沿时发送器向数据线上传送数据,并在下一个上升沿或者下降沿时从数据线上接收数据。
MSB为最高位,LSB为最低位。
2. 极性和相位
有别于IIC,SPI总线通过极性(CPOL)和相位(CPHA)可以分为四种工作模式。
CPOL表示SCLK空闲时的状态。CPOL为0时,空闲时SCLK为低电平;CPOL为1时,空闲时SCLK为高电平。CPHL表示采样时刻。CPHA为0时,每个周期的第一个时钟沿采样(接收数据);CPHA为1时,第二个时钟沿采样(接收数据)。
SPI和IIC的应用场景都是短距离的通信。SCI节省引脚或者线(因为只需两根),但是通信速度慢;SPI通信速度快,但是需要的引脚或者线会多。