一、SPI通信协议跟I2C通信协议的对比
二、SPI的四根通信线
三、SPI工作示意图
上面这图可以大概理解为两个寄存器在时钟的配合下交换数据,切换边沿是指两个寄存器的数据在MOSI/MISO线上,采样边沿是指在MOSI/MISO的数据进入寄存器。
其中有两个重要参数:CPOL,CPHA。CPOL可以理解为SCK的起始电平,0为低电平,1为高电平。
CPHA可以理解为数据在第几个边沿采样,CPHA=0为第一个边沿采样(即数据进入寄存器,SCK起始信号为第一个边沿采样),CPHA=1为第二个边沿采样,如模式0 CPOL=0,CPHA=0,起始SCK为低电平,在SCK为低电平时,数据进入寄存器,看时序图,在SS发出起始信号后,SCK并未改变,但是寄存器已经将数据放到MISO/MOSI上了。模式1 CPOL=0,CPHA=1,可以理解为SCK起始为低电平,寄存器将数据放到MISO/MOSI线上,等SCK上升沿时为第二个边沿采样,这时数据进入寄存器。模式2、模式3以此类推。
另外需要注意的是MISO跟MOSI的起始,终止时序图不同,这是因为避免多个从设备同时驱动MISO线导致信号冲突(短路风险)。开始前跟结束MISO为高阻态,高阻态相当于断开电路(阻抗极高,约兆欧级),此时MISO线既不输出高电平也不输出低电平,由外部上拉电阻或主设备控制电平。
模式0时序图: