SPI总线协议
SPI总线协议
SPI总线是一种串行全双工同步的通讯协议,由四条信号线控制:MISO(主输入从输出)、MOSI(主输出从输入)、SCLK(时钟信号)、CS(片选信号线)。可以挂载多设备、主机是使用总线权利者、从机只可以听取从机、被主机管理;当主设备需要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或者低电平、根据从机而定)表示选中从设备表示;(一般来说CS是高电平CS上面有一杠就是0)
极性和相位
SPI总线有四种不同的工作方式,取决于极性CPOL跟相位CPHA
CPOL为SCLK空闲时的状态
CPOL=0;空闲时为低电平
CPOL=1;空闲时为高电平
CPHA表示采样时刻
CPHA=0;每个周期的第一个时钟沿采样
CPHA=1;每个周期的第二个时钟沿采样
所以有四种情况
补充:
时钟极性(CPOL)定义了SCLK在空闲状态时的电平。如果CPOL为0,表示SCLK在空闲状态下为低电平;如果CPOL为1,表示SCLK在空闲状态下为高电平。
时钟相位(CPHA)定义了数据采样和传输的时机。如果CPHA为0,表示数据在SCLK的上升沿进行采样,数据在SCLK的下降沿进行传输;如果CPHA为1,表示数据在SCLK的下降沿进行采样,数据在SCLK的上升沿进行传输。
至于四种模式的选择都是要根d据从机芯片手册的,要主机配置成一样的
通信步骤流程
先发高位后发低位;一定不需要应答,不用等应答,也不会应答;跟IIC不同,IIC有应答发完不用应答就可以立马发下一个;没有起始信号也没有停止信号没有应答 只有数据发送 发完继续发
数据发送:当第一个时钟线上升沿或者下降沿时,发送器发送数据
数据接收:当第一个时钟线上升沿或者下降沿时,发送器接收数据
也就是只有有时钟沿,不在发就是在读,只不过第一个沿在发,下一个沿一定在读
换言之就是一个时钟周期可以进行收发一位bit数据,那么8个时钟周期就是一个字节byte了
注意:一个时钟周期就是上升沿,下降沿一次;MSB高位 LSB低位
IIC跟SPI的异同
相同点:
-
串行,同步方式
-
均采用TTL电平,传输的距离和应用场景类似
-
均采用主丛方式工作
不同点:
-
IIC为半双工、SPI为全双工
-
IIC有应答机制跟起始跟停止,SPI无应答
-
IIC寻址通过启用总线后第一个数据8位中的前七位地址来寻址,SPI通过向对应从机片选使能
-
IIC的时钟极性和时钟相位固定,时序有一种,SPI的时钟极性和时钟相位不固定,时序有四种