SPI、I2C、UART等通信协议
1. SPI
SPI(Serial Peripheral interface)是由美国摩托罗拉公司最先推出的一种同步串行传输规范,是现在比较常用的一种单片机串行通信接口。该接口是一种高速、全双工、同步的通信总线。
SPI主从模式
SPI分为主、从两种模式,一个SPI通讯系统通常为一个主设备,一个或多个从设备。主设备(Master)提供时钟,接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备主动发起。当存在多个从设备时,通过各自的片选信号进行管理。SPI是全双工且没有定义速度限制,速度一般由主机或者从机时钟所能支持的最大时钟频率来设定。
SPI信号线
SPI接口一般使用四条信号线通信:MOSI、MISO、SCK、CS
- MOSI: 主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
- MISO: 主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
- SCK: 串行时钟信号,由主设备产生。
- CS: 从设备片选信号,由主设备控制,它的功能是用来作为“片选引脚”,也就是选择指定的从设备,每个从设备都需要一根CS线来进行片选,一般为低电平有效。
SPI通信的四种模式
SPI的CLK线是没有定义死的,所以可以自由设定,时钟极性(CPOL)和时钟相位(CPHA)可以组合成四种不同模式。
时钟极性(CPOL)定义了时钟空闲状态电平:
- CPOL = 0,表示当SCK空闲态为低电平
- CPOL = 1,表示当SCK空闲态为高电平
时钟相位(CPHA)定义数据的采集时间点:
- CPHA = 0,在时钟的第一个跳变沿进行数据采样
- C