一、前言
最近系统性的复习了常用的嵌入式通讯协议,便总结性的写了这文章,本文适合想要快速一览各通信协议的关系区别的同学,那么废话不多说,直接上表格
二、各通信协议的关系
协议 | 全称 | 属性 | 接线 |
---|---|---|---|
UART | 通用异步收发器 | 异步、全双工、串行通信 | TX-------RX RX-------TX GND--GMD |
USART | 通用同步/异步收发器 | 同步/异步、全双工、串行通信 | TX--------RX RX--------TX GND----GMD SCLK--SCLK |
IIC | 集成电路总线 | 同步、半双工、串行通信 | SCL----SCL SDA----SDA |
SPI | 串行外设接口 | 同步、全双工、串行通信 | SCLK---SCLK MOSI---SIMO MISO---SOMI SS-------SS |
CAN | 局域控制网络 | 异步、半双工、串行通信 | CAN_H--CAN_H CAN_L--CAN_L |
三、各通信协议的简单介绍
1、UART
定义
UART(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器,是一种广泛应用于嵌入式系统和电子设备中的串行通信协议。UART 通信不需要时钟信号,为异步通信,数据传输速率以波特率表示,即每秒传输的位数。
TX(Transmit):用于发送数据。
RX(Receive):用于接收数据。
接线图
数据格式
Start Bit | Data Frame | Parity Bit | Stop Bit |
Start Bit:开始位,表示传输的开始,发送设备通过将 TX 线从高电平拉到低电平来发起通信,表示数据传输的开始,长度:1bit
Data Frame:数据位,表示传输的数据,长度:通常8bits
Parity Bit:奇偶校验位,验证数据传输的正确性,校验方式又分为无奇偶校验、奇校验、偶校验,长度:1bit
Stop Bit:停止位,发送设备通过将 TX 线从低电平拉到高电平来结束通信,长度:通常1bit
2、USART
定义
USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发传输器,USART 协议结合了 UART(通用异步收发传输器)和同步通信的特点,既支持异步通信,也支持同步通信,数据传输速率以波特率表示,即每秒传输的位数,当用作异步通信时,与uart没有区别,以下主要分享用作同步通信时的特点
TX(Transmit):用于发送数据。
RX(Receive):用于接收数据。
SCLK(Serial Clock):用于传输时钟信号,由主设备生成。
接线图
数据格式
在 USART 同步通信模式下,数据传输依赖于时钟信号(SCLK)来同步。时钟信号由主设备生成,并在整个通信过程中保持稳定。从设备根据时钟信号的边沿(上升沿或下降沿)来采样数据线(TX 和 RX)上的数据,数据帧格式与UART一致
3、IIC
定义
I²C(Inter-Integrated Circuit)集成电路总线,广泛应用于嵌入式系统和电子设备中,用于在微控制器和外围设备之间进行短距离通信。
SDA(Serial Data Line):用于传输数据。
SCL(Serial Clock Line):用于传输时钟信号。
接线
数据格式:
开始信号:主设备通过将 SDA 线从高电平拉到低电平,同时 SCL 线保持高电平,来发起通信。
数据传输:主设备和从设备之间通过 SDA 线传输数据,每传输一个字节后,接收方发送一个应答信号(ACK)。
停止条件:主设备通过将 SDA 线从低电平拉到高电平,同时 SCL 线保持高电平,来结束通信。
4、SPI
定义:
SPI(Serial Peripheral Interface)串行外设接口,是一种同步串行通信接口,广泛应用于嵌入式系统和电子设备中,用于在微控制器和外围设备之间进行高速数据传输。
SCLK(Serial Clock):用于传输时钟信号,由主设备生成。
MOSI(Master Out Slave In):主设备到从设备的数据线(主出从入)。
MISO(Master In Slave Out):从设备到主设备的数据线(主入从出)。
SS(Slave Select):用于选择从设备,通常为低电平有效。
接线图:
传输方式:
1、选择从设备:
SS 线拉低:主设备通过拉低相应的 SS 线来选择特定的从设备。SS 线通常为低电平有效,即当 SS 线为低电平时,从设备被选中。
从设备准备:从设备在 SS 线被拉低后,准备接收和发送数据。
2、数据传输:
时钟信号生成:主设备生成时钟信号(SCLK),用于同步数据传输。时钟信号的频率由主设备控制,通常在几 kHz 到几 MHz 之间。
3、数据发送:
主设备发送数据:主设备通过 MOSI 线发送数据,数据在时钟信号的边沿(通常是上升沿或下降沿)被采样。
从设备发送数据:从设备通过 MISO 线发送数据,数据在时钟信号的边沿(通常是上升沿或下降沿)被采样。
4、数据接收:
主设备接收数据:主设备通过 MISO 线接收从设备发送的数据。
从设备接收数据:从设备通过 MOSI 线接收主设备发送的数据。
5、 取消选择从设备:
SS 线拉高:数据传输完成后,主设备通过拉高 SS 线来取消选择从设备。SS 线被拉高后,从设备进入空闲状态,不再接收和发送数据。
5、CAN
定义:
CAN(Controller Area Network)局域控制网络,是一种广泛应用于汽车、工业控制和其他领域的串行通信协议,CAN 使用差分信号传输数据,意味着数据是通过比较 CAN_H 和 CAN_L 之间的电压差来传输。
CAN_H(CAN High):用于传输高电平信号。
CAN_L(CAN Low):用于传输低电平信号。
接线:
传输原理:
1、数据帧格式:
帧起始:表示数据帧的开始。
仲裁场:包括标识符(ID)和远程传输请求位(RTR),用于确定数据包的优先级。
控制场:包括数据长度码(DLC),表示数据字段的长度。
数据场:包含实际传输的数据。
CRC 场:包含循环冗余校验(CRC)码,用于错误检测。
应答场:接收节点通过应答场确认数据包的接收。
帧结束:表示数据帧的结束。
2、数据传输:
发送节点:发送节点根据数据帧格式生成数据包,并通过 CAN_H 和 CAN_L 线发送数据。
接收节点:接收节点通过 CAN_H 和 CAN_L 线接收数据包,并根据数据帧格式解析数据。
3、仲裁机制:
非破坏性仲裁:当多个节点同时发送数据时,CAN 使用非破坏性仲裁机制来解决冲突。每个节点在发送数据时会监测总线上的电平,如果发现总线电平与自己发送的电平不一致,则自动退出发送,优先级较低的节点会自动退出发送,从而避免了冲突。