UART、IIC、SPI、CAN四种通信协议详解与对比
UART、IIC、SPI、CAN四种通信协议详解与对比
UART、IIC、SPI、CAN是四种常见的通信协议,它们在嵌入式系统和设备通信中有着广泛的应用。本文将详细介绍这四种协议的特点、硬件连接方式和帧格式,并对比它们的优缺点和适用场景。
UART
简介:UART(Universal Asynchronous Receiver Transmitter)是一种通用的串行、异步通信总线,主要用于嵌入式系统中主机与辅助设备之间的通信。
硬件连接:UART通信只需要两条数据线(TX和RX),可以实现全双工通信。两个设备的发送器和接收器的TX和RX两两相连即可。
帧格式:
- 起始位:用一位逻辑0表示帧的开始
- 数据位:可以有5~8位
- 校验位:采用奇校验或偶校验的方式,用来检错
- 停止位:用1~2位的逻辑1表示帧的结束
UART只是一种通信协议,需要发送器和接收器提前约定好帧格式和通信速率、奇偶校验、每帧数据位数,才能正常通讯。为了完善通讯协议,后来又发展出了RS232和RS485两种协议:
RS232:
电器特性:逻辑“1”为-5V
-15V,逻辑“0”为+5V+15V传输距离:一般可达15m
RS485:
电器特性:采用差分信号做数据传输,逻辑“1”为+2V
+6V,逻辑“0”为-2V-6V传输距离:可达1500m
IIC
简介:IIC(Inter-Integrated Circuit)是一种常用的串行通信总线协议,由飞利浦公司在20世纪80年代开发。它允许一个主设备控制多个从设备,实现多设备之间的通信。
硬件连接:每个设备使用两根线(SCL时钟线和SDA信号线)挂载在IIC总线上。
帧格式:
- 起始信号:SCL为高电平时,SDA从高电平到低电平的变化表示帧起始
- 设备地址:用7位逻辑信号表示从设备的地址码,每个从设备的地址码唯一
- 读写数据位:写数据置为0,读数据置为1
- 应答信号:从机发给主机的应答信号,如果从机成功接收到主机发送的信号,发送0;没有收到发送1
- 传输数据:传输数据8个时钟周期为一组,也就是一个字节,每发送一个字节,需要接受方发送一次应答信号
- 终止信号:SCL为高电平时,SDA从低电平到高电平的变化表示帧终止
SPI
简介:SPI(Serial Peripheral Interface)是一种高速、全双工、同步的串行通信总线,采用主从方式工作,一般一个主设备,多个从设备。SPI需要四根线:MISO(主输入从输出)、MOSI(主输出从输入)、SCLK(时钟)、CS(片选)。
硬件连接:
帧格式:
SPI与其他通信方式不同,因为有片选线,所以并不需要有地址位、起始位、结束位等概念。只需要数据线和时钟线配合,即可完成通讯。一个字节传送完成后,无需应答,即可开始下一个字节的传送;采用同步方式工作,时钟线在上升沿或下降沿时,发送器向数据线上发送数据,在紧接的下降沿会上升沿读取数据,八个时钟即可完成一个字节的数据传送。
CAN
简介:CAN(Controller Area Network Bus)是一种控制器局域网总线,主要用于汽车和工业控制领域,实现多个ECU之间的相互通信。使用差分信号进行通讯,两条线压差为0V表示逻辑1,压差2V表示逻辑0。
帧格式:
- 起始位:用1位逻辑0表示帧的开始
- 识别码:每一个设备都有属于自己的11位识别码,用于确认发送设备的身份。识别码不光用来确认身份,还可以用来决定发送的优先级
- 控制码:第一位是IDE位,用来决定是否使用扩展帧,后四位是DLC位,用四位二进制来表示数据码的长度
- 数据码:用来传输数据,数据码的范围为长度为1~8个字节
- CRC位:15位CRC循环冗余码,用来纠错
- ACK确认槽:接收端发送信号,表示接收到数据
- 结束位:用7位逻辑1表示帧的结束
总结
这四种通信协议各有特点和适用场景:
- UART:简单方便,适合点对点通信,常用于计算机和外部设备(如打印机)的通信。
- IIC:支持多设备通信,但速度较慢,适合低速设备(如传感器)的通信。
- SPI:速度快,适合高速数据传输(如显示器),但占用资源较多。
- CAN:安全性高,适合汽车和工业控制等对安全性要求高的领域。
参考资料:
- 爱上半导体
- SPI、UART、RS232、RS485、IIC 5种嵌入式经典通信总线协议精讲