SPI总线基本概念
SPI是一种高速、全双工、同步的串行通信总线,全称是Serial Peripheral Interface,使用时在芯片的管脚上只占用三根或者四根线(如果单向传输的话只需三根线就可以了),节约了芯片的管脚资源,所以在实际项目中应用也非常广泛。SPI总线的通信模式也是一主多从模式。
SPI的四根线都是单向的I/O线:
- MISO(SDI)– Master Input Slave Output,主设备数据输入,从设备数据输出;
- MOSI(SDO)– Master Output Slave Input,主设备数据输出,从设备数据输入;
- SCLK – Serial Clock,时钟信号,由主设备产生;
- CS(SS)– Chip Select,从设备使能信号,由主设备控制。
常见的硬件连接图:
SPI如何实现一对一的通信?
主设备通过CS片选引脚选中要通信的从设备,只有当从设备的CS引脚被使能才能和主设备进行通信。这就允许在同一个SPI总线上连接多个SPI从设备但仍能保持一对一的通信。
SPI的工作模式
SPI有四种工作模式,各个工作模式的不同在于SCLK不同,具体工作由CPOL和CPHA决定:
CPOL(Clock Polarity):时钟极性
- 当CPOL为0时,时钟空闲时电平为低;
- 当CPOL为1时,时钟空闲时电平为高;
CPHA(Clock Phase):时钟相位
- 当CPHA为0时,时钟周期的上升沿采集数据,时钟周期的下降沿输出数据;
- 当CPHA为1时,时钟周期的下降沿采集数据,时钟周期的上升沿输出数据;
CPOL和CPHA分别都可以是0或是1,对应四种组合即为SPI的四种工作模式。
注意:SPI主模块和与之通信的外设时钟相位和极性应该保持一致,主设备SPI时钟和极性的配置应该由外设来决定,二者的配置应该保持一致,即主设备的SDO同从设备的SDO配置一致,主设备的SDI同从设备的SDI配置一致。
SPI简单的收发时序,上升沿发送、下降沿接收、高位先发送
总结:
SPI接口的优点:不需要进行寻址操作且全双工,可以同时发送和接收数据,传输速率高。
SPI接口的缺点:没有指定的流控制,没有应答机制确认是否接收到数据。
以上是对SPI总线协议的总结,如有不足欢迎指正;关于SPI总线在找工作面试中也会被经常问到,如果喜欢的话要收藏关注哦!