一、SPI总线简介
SPI总线是串行、高速、全双工、同步通信总线。采用主从方式工作,一般有一个住设备和一个或多个从设备。SPI需要至少4根线,分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(片选)。
二、寻址方式
当主设备要和某个从设备进行通信时,主设备需要先向从设备的片选信号上发送使能信号(高电平或者低电平,根据从机而定),表示选中该从设备。
三、通信过程
SPI总线在进行数据传输时,先传送高位,后传送低位。一个字节传送完成后无需应答(无起始无终止无应答信号),即开始下一个字节的传送。时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据。
四、极性和相位
SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)这两个因素,CPOL表示SCLK空闲时的状态。
CPOL=0,空闲时SCLK为低电平
CPOL=1,空闲时SCLK为高电平
CPHA表示采样时刻
CPHA=0,每个周期的第一个时钟沿采样
CPHA=1,每个周期的第二个时钟沿采样
五、SPI与I2C的区别及优缺点
相同点:
①均采用串行、同步的方式
②均采用TTL电平、传输距离和应用场景类似
③均采用主从方式工作
不同点:
①I2C为半双工、SPI为全双工
②I2C有应答机制、SPI无应答机制
③I2C通过向总线广播从机地址来寻址,SPI通过对应从机发送使能信号
④I2C的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调
优缺点:
①I2C速度慢,接口少,节省硬件资源
②SPI接口多(片选线)占的硬件资源多,速度快节省时间