#SPI硬件连接
- SCL : 时钟信号,only由主设备产生。
- SDO : 主设备数据输出
- SDI : 主设备数据输入
- CS : 从设备选择,CS = 1选中使能。
SPI是一种全双工串行通信协议,以主从模式工作,没有地址的概念,时钟同步由SCLK来完成,主设备可以通过控制SCLK来控制数据传输快慢,甚至停止等。
SPI总线的SDO、SDI也需要接上拉电阻。
#SPI协议
spi不像iic那样有固定的总线空闲状态,他的总线空闲状态和在SCLK什么状态下发送接收数据都是可以设置的
主要由CPOL和CPHA两个寄存器bit设置
- CPOL = 0,串行同步时钟空闲状态为低电平
- CPOL = 1,串行同步时钟空闲状态为高电平
- CPHA = 0,在SCLK的第一个跳变沿,对数据采样,第二个跳变沿发送数据
- CPHA = 1,在SCLK的第二个跳变沿,对数据采样,第一个跳变沿发送数据
SPI主模块和与之通信的外设备时钟相位和极性应该一致。
- 如果由多个从设备,可以外接38译码器等硬件来选择从设备
- 如果多个从设备CPOL,CPHA和主设备不一样,需要在切换从设备的时候改变主机的CPOL,CPHA值来保证顺利通讯。
需要注意的是主机的SDI模式需要跟从机SDO模式一样,主机的SDO模式需要跟从机SDI模式一样。