前置概念理解
串行/并行
-
串行
数据按位传输
UART、SPI、IIC、CAN
-
并行
数据在多根信号线上同时传输
计算机内部总线等
同步/异步
-
同步
通信双方共享时钟信号(线),通过一致的频率实现信息同步
IIC;SPI;
-
异步
通信双方分别有自己的时钟,通过起始位/停止位等实现信息同步
UART;CAN
全双工/半双工/单工
-
全双工
双向通信,双方都可发送数据,且可同时进行
UART;SPI
-
半双工
双向通信,双方都可发送数据,但同一时刻只能一方发送,一方接收
IIC;CAN
-
单工
单向通信,只能由一方发送数据,一方接收数据
通讯协议对比
UART
串行(单向只有一根数据线发送数据)、异步(无时钟线)、全双工(收发在不同线上)
速率受传输距离等外部环境影响
-
信号线与接线方式
- TX
- RX
- GND
-
通信结构
点对点式:1对1
-
信号类型与抗干扰能力
单端信号(相对GND);抗干扰能力有限
不包括RS-485
-
数据通信格式
按数据帧传输,一个字节数据:
起始位+数据位+奇偶校验位+停止位
使用起始位和停止位表示数据帧的开始和结束
加上起始位/停止位,这一个字节数据不止8位
-
使用场景
计算机与外部设备通信,如计算机和蓝牙模块、无线模块等
适用于速率有限,简单的点对点通信
SPI
串行(单向只有一根数据线发送数据)、同步(有时钟线)、全双工(收发在不同线上)
速率受信号干扰布线长度等外部环境影响
-
信号线与连接方式
- MOSI(Master Out Slave In)
- MISO(Master In Slave Out)
- SCLK(Serial Clock)
- CS/SS(Chip Select / Slave Select)
-
通信结构
主从式:1对多
-
信号类型与抗干扰能力
单端信号(相对GND);抗干扰能力有限
-
数据通信格式
因为有片选线,时钟线,因此没有一帧的概念;通过数据线和时钟线配合完成通讯
-
设备选择
单主设备:使用片选信号线(SS)
-
使用场景
高速数据传输,如读取SD卡等
适用于高速数据传输,一主多从的情况
IIC
串行(单向只有一根数据线发送数据)、同步(有时钟线)、半双工(收发在同一根线上)
速率受总线负载、线缆长度、设备数量等外部环境影响
-
信号线与连接方式
- SDA(Serial data)
- SCL(Serial clock line)
-
通信结构
多主多从:多对多
多个主设备可同时尝试访问总线,由总线仲裁机制确定谁可以获得总线控制权
-
信号类型与抗干扰能力
单端信号(相对GND);抗干扰能力有限
-
数据通信格式
-
开始信号
SCL保持高电平,SDA由高电平变为低电平后,延时(>4.7us),SCL变为低电平。
-
停止信号
SCL保持高电平。SDA由低电平变为高电平
-
应答信号
主机SCL拉高,读取从机SDA的电平,为低电平表示产生应答
低电平0表示应答,1表示非应答
-
数据传送
IIC信号在数据传输过程中,当SCL=1高电平时,数据线SDA必须保持稳定状态,不允许有电平跳变
只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化
其中ACK应答由从机产生,其余均由主机产生
-
-
使用场景
与低速设备通信,如单片机与低速外设(温度传感器等)
适用于低速通信应用,多主多从的情况
CAN
串行(差分信号,近似一根线发送数据)、异步(无时钟线)、半双工(收发都在差分信号线上)
通信速率相对较低,长距离
-
信号线与连接方式
- CAN_High
- CAN_Low
-
通信结构
多主多从:多对多
所有节点均平等,任何节点都可作为主节点,发送的数据可广播到其它所有节点
当多个主节点都尝试发送消息时,由can协议的仲裁机制来避免冲突
-
信号类型与抗干扰能力
差分信号;抗干扰能力较强
-
数据通信格式
较复杂,使用时注意波特率等;详情另行查阅
-
应用场景
多个控制单元之间通信,如汽车
适用于长距离、抗干扰要求高、多主多从的情况
文章主要参考:
秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4 CAN!_程序获取 can协议所有id-CSDN博客
【一看就懂】UART、IIC、SPI、CAN四种通讯协议对比介绍_uart、can、spi、i2c通信协议-CSDN博客