工作原理
SPI的工作原理基于主从架构。主设备通过四条主要信号线与一个或多个从设备进行通信:
- MOSI(主输出,从输入)DI(Master Output Slave Input):主设备发送数据到从设备。
- MISO(主输入,从输出)DO(Master Input Slave Output):从设备发送数据到主设备。
- SCLK(时钟信号):由主设备生成的时钟信号,用于同步数据传输。
- SS(从选择)(Slave Select):选择特定的从设备进行通信。
同步,全双工
支持总线挂载多设备(一主多从)
在数据传输时,主设备首先激活从设备的SS线,然后通过SCLK发送时钟脉冲,数据在每个时钟脉冲的上升或下降沿被发送和接收。这样,主从设备可以实现高效的全双工通信。
硬件电路
所有SPI设备的SCK、MOSI、MISO分别连在一起
主机另外引出多条SS控制线,分别接到各从机的SS引脚
输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入
SPI时序基本单元
起始条件:SS从高电平切换到低电平
终止条件:SS从低电平切换到高电平
交换一个字节(模式0)
CPOL=0:空闲状态时,SCK为低电平
CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据
SPI时序
发送指令
向SS指定的设备,发送指令(0x06)
SCK下降沿,将数据移出,主机将数据移出到MOSI,MOSI变化电平,要在上升沿前完成变化,SCL上升沿数据采样输入(SCK低电平是变化的时期,高电平是读取时期)
主机用0x06换来了从机的0xFF
注意:下降沿变化电平,上升沿收集变化的电平
指定地址写
向SS指定的设备,发送写指令(0x02)
随后在指定地址(Address[23:0])下,写入指定数据(Data)
指定地址读
向SS指定的设备,发送读指令(0x03), 随后在指定地址(Address[23:0])下,读取从机数据(Data)