1、SPI协议
SPI相对于I2C传输速度更快;设计简单,通信协议使用硬件线比较多,有些资源浪费
以下设备需要进行共地,如果从机没有独立的供电源,主机需要给供电
SS线低电平有效,主机只能选择一个从机
推挽输出的高低电平均有高驱动能力,(I2C为防止电路短路采用开漏输出模式)
当某个从机未被选中时,它的MISO为高阻态,并不输出有用信息
首先由波特率发生器产生时钟上升下降沿
当主机中的数据是10101010,从机为01010101时,此时产生一个上升沿
此时MOSI通信线上为1,为高电平,MISO线为0,为下降沿,之后迎来一个下降沿时
主从机都会进行数据采样输入,如下所示:
同样的方式,直到第8个时钟之后:
以上是同时发送和接收
只有发送不想接收时,只读从机数据即可;只想接收不想发送,只看主机接收数据即可
之后是SPI时序条件:
上升沿时主机和从机分别移出数据最高位,下降沿时,主机移出的数据移入从机数据的最低位,从机的最高位移入主机数据的最低位。模式1与模式3的CPOL=1,SCK取反
MISO在SS为高电平是一直处于高阻态。以下和上述介绍的一样
除了以上模式外,还有提前半个相位的模式0,此时SCK的动作不一致,它需要在第0个边沿移出数据,然后移入等,相当于SS的下降沿也当为时钟的一部分,(这种模式使用更多)与模式2不同就是CPOL=1,SCL极性取反:
一些指令时序: