问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

UART、IIC、SPI、CAN四种通讯协议对比介绍

创作时间:
作者:
@小白创作中心

UART、IIC、SPI、CAN四种通讯协议对比介绍

引用
CSDN
1.
https://blog.csdn.net/qq_43892462/article/details/138473169

UART、IIC、SPI、CAN是四种常见的通信协议,它们在嵌入式系统和设备通信中有着广泛的应用。本文将详细介绍这四种协议的特点、硬件连接方式、帧格式以及应用场景。

UART

简介:UART(Universal Asynchronous Receiver Transmitter)是一种通用的串行、异步通信总线。该总线有两条数据线,可以实现全双工的发送。在嵌入式系统中常用于主机与辅助设备之间的通信。

硬件连接:UART只能是两个设备之间的通信,两个设备的发送器和接收器的TX和RX两两相连即可。

帧格式

  1. 起始位:用一位逻辑0表示帧的开始
  2. 数据位:可以有5~8位
  3. 校验位:采用奇校验或偶校验的方式,用来检错,如果检测出错误,可以让发送设备重发
  4. 停止位,用1~2位的逻辑1表示帧的结束

值得一提的是,UART只是一种通信协议,需要发送器和接收器提前约定好帧格式和通信速率、奇偶校验、每帧数据位数,才能正常通讯。为了完善通讯协议,后面又对UART做了完善,现在普遍使用RS232和RS485两种协议。

  1. RS232:
  • 电器特性:逻辑“1”为-5V -15V,逻辑“0”为+5V+15V。
  • 传输距离:传送距离一般可达15m。
  1. RS485:
  • 电器特性:采用差分信号做数据传输,逻辑“1”为+2V +6V,逻辑“0”为-2V-6V。
  • 传输距离:0传送距离一般可达1500m。

IIC

简介:IIC(Inter-Integrated Circuit)是一种常用的串行通信总线协议,也被称为I2C(Inter-IC)总线。它由飞利浦(Philips)公司在20世纪80年代开发,并成为一种广泛应用于数字集成电路之间的通信标准,相较于UART,IIC可以组成一个网络,实现多个设备之间的通讯。

硬件链接:每个通讯设备分别使用两根线,SCL(时钟线)、SDA(信号线)挂载在IIC总线上,挂载方式如下。

帧格式

  1. 起始信号:SCL为高电平时,SDA从高电平到低电平的变化表示帧起始。
  2. 设备地址:用7位逻辑信号,表示从设备的地址码,每个从设备的地址码唯一。
  3. 读写数据位:写数据置为0,读数据置为1。
  4. 应答信号:从机发给主机的应答信号,如果从机成功接收到主机发送的信号,发送0。没有收到发送1。
  5. 传输数据:传输数据8个时钟周期为一组,也就是一个字节,每发送一个字节,需要接受方发送一次应答信号,表示数据成功接收或失败。
  6. 终止信号:SCL为高电平时,SDA从低电平到高电平的变化表示帧起始。

SPI

简介:SPI(Serial Peripheral Interface,串行外设接口) 是串行外设接口的缩写,SPI是一种高速、全双工、同步的串行通信总线;采用主从方式工作,一般一个主设备,多个从设备;SPI需要四根线,分别是MISO(主输入从输出)、MOSI(主输出从输入)、SCLK(时钟)、CS(片选)。

硬件连接

帧格式
SPI与其他通信方式不同,因为有片选线,所以并不需要有地址位,起始位、结束位等,没有一帧这个概念。只需要数据线和时钟线配合,即可完成通讯。

一个字节传送完成后,无需应答,即可开始下一个字节的传送;采用同步方式工作,时钟线在上升沿或下降沿时,发送器向数据线上发送数据,在紧接的下降沿会上升沿读取数据,八个时钟即可完成一个字节的数据传送。无需接收方应答。

CAN

简介:CAN(Controller Area Network Bus)控制器局域网总线,最主要应用与汽车和工业控制领域,实现多个ECU之间的相互通信,使用差分信号进行通讯。两条线压差为0V表示逻辑1,压差2V表示逻辑0

帧格式

  1. 起始位:用1位逻辑0表示帧的开始
  2. 识别码:每一个设备都有属于自己的11位识别码,用于确认发送设备的身份。识别码不光用来确认身份,还可以用来决定发送的优先级,举个例字:如果两个信号同时占用总线,那么会产生冲突,这时,识别码就起作用了,识别码位数高的,会优先发送,识别码低的停止发送信号
  3. 控制码:第一位是IDE位,用来决定是否使用扩展帧,后四位是DLC位,用四位二进制来表示数据码的长度,比如DLC为“0001”,表示数据码长度为1个字节;DLC为“0011”,则表示数据码长度为3个字节。所以数据码的长度为1~8个字节
  4. 数据码:用来传输数据,数据码的范围为长度为1~8个字节
  5. CRC位:15位CRC循环冗余码,用来纠错,如果错了,从新发送数据
  6. ACK确认槽,接收端发送信号,表示接收到数据了
  7. 结束位,用7位逻辑1表示帧的结束

资料来源:

  1. 爱上半导体
  2. SPI、UART、RS232、RS485、IIC 5种嵌入式经典通信总线协议精讲
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号