通讯协议之UART、RS232、RS485、IIC

通信协议之 UART、RS232、RS485、IIC

通信基础

在正式内容之前,先简单说明一下通信协议中的几个基本概念。

  • 串行/并行

如下图所示,串行通信即利用一条传输线将数据的一位位地顺序传送。当传输一个字节(8bit)的数据时,串口会将这8个位逐个地在一条连接线上传输。串行通信的特点是通信线路简单、成本较低,适用于远距离通信,但传输速度较慢。并行通信相对于串行通信,这种方式使用多条传输线同时传输一个数据的各位。例如,传输一个字节的数据时,并行通信会将8个位一字排开,分别在8条连接线上同时传输。并行通信的优点在于传输速度较快,但成本较高,适用于短距离通信。

串行并行示意图

  • 单工/双工

单工通信:在单工通信中,数据流是单向的,即信息只能沿一个方向传输。一方固定为发送端,另一方则固定为接收端。例如,广播电台是一个单工通信系统,它将信号传输给听众,但不允许听众回传信息。单工通信适用于只需要单向通信的场景,如传感器数据上传、广播系统等。

单工通信示意图

双工通信:双工通信允许双向传输,即数据可以同时在两个方向上传输。这类似于我们在电话中通话的方式,可以同时听到对方的声音。双工通信又可分为半双工和全双工,半双工仅使用一条数据线传输数据,因此同一时刻仅能发送或接受数据,而全双工使用 2 条数据线传输数据,可以同时发送和接收数据。例如,计算机之间的通信就是全双工方式,因为它允许同时进行双向传输。全双工通信要求收发双方都有独立的接收和发送能力。

双工通信示意图

UART

Universal Asynchronous Receiver/Transmitter(简称: UART), 即通用异步收发器,是一种通用的串行异步通信总线协议。该总线有两条数据线,可以同时实现发送和接受数据,是一种点对点全双工通信方式。

UART 协议的硬件连接如下:

UART连接示意图

UART 的帧格式:

如下图所示,一帧数据从起始位开始,至停止位结束。空闲期间,数据线为高电平状态,代表无数据传输。

  • 起始位:每个 UART 帧的开始由一个低电平(0)的逻辑位标记,表明数据传输即将开始;
  • 数据位:可以是 5~8 位的数据,先发低位,再发高位,一般常见的是 8 位(1个字节);
  • 校验位:奇偶校验是常见的校验方式。在奇校验中,校验位被设置为使得数据位和校验位中的“1”的个数为奇数;在偶校验中,校验位被设置为使得“1”的个数为偶数;
  • 停止位:停止位是一帧数据结束的标志。在每个数据帧的末尾,发送端会输出一个逻辑“1”作为停止位。停止位的长度通常为 1 位,但也可以是 1.5 位或 2 位。它提供了校正时钟同步的机会,确保接收端能够准确识别数据帧的结束。

UART的帧格式

串口之间是如何发送和接受数据呢?

上面介绍了数据帧的格式,在一帧信息中,假设出现 2 个数据位都是低电平,接收方是如何识别该 2 个数据位呢?

在前面提到,UART 是一种异步数据传输技术,它使用特定的波特率来传输数据。波特率是指每秒传输的数据位数,也称为传输速率。这使得发送方和接收方在没有时钟同步的情况下,只需要使用相同的波特率,就可以知道一位数据高/低电平的持续时间,这样也就能识别出一帧的完整信息。当然,因为发送方和接收方不可避免的存在一些误差(两者认为的一位数据高/低电平的持续时间存在细小差异),发送大量的数据位时,累计的误差如果超过一个数据位的时间,则后续的数据位就会全错,因此该协议规定了一帧最多传输 8 位数据,这样就有效的避免了这个问题。

UART 存在的问题

  • 电气接口不统一:UART 只是对信号的时序进行定义,而未定义接口的电气特性。UART 通信时,直接使用处理器的 TTL 电平,但是不同处理器间的高低电平存在差异,这样造成了两个处理器间不能之间相连;比如设备 A 中高电平为 5V, 设备 B 中高电平为 3.3V, 那么这两个设备通信就比较麻烦,另外,UART 也没有规定连接时连接器的标准,这就好比同样是 PD 快充协议,有 A 口也有 C 口。
  • 抗干扰能力差:TTL信号的抗干扰能力较差,传输中极其容易受干扰;
  • 通信距离短:因为抗干扰能力差,因此传输距离比较短。

RS232

RS232 协议也是一种常用的总线协议,RS232 并不像 UART 和后续要介绍的 IIC 这种仅仅一个单纯的协议,这个协议实质上是依赖于 UART,在电气层或者是物理层进行一些处理,是一种电气层的协议。RS232 协议是在 1970 年由美国电子工业协会(EIA)联合一些厂家共同制定的用于串行通信的协议标准,该协议标准规定了串行通信的接口、信号电平、传输速率等。

RS232 的电气特性

RS232 协议规定,在逻辑“1”时,信号电平为 -3V ~ -15V,在逻辑“0”时,信号电平为 +3V ~ +15V。因此,RS232 协议的信号电平相对于 TTL 电平较高,可以传输较远距离的数据。同时,RS232 协议规定,在空闲状态时,信号线为逻辑“1”状态。

RS232 的接口

RS232 协议定义了两种常见的接口类型:DB-25 和 DB-9。DB-25 接口有 25 个引脚,DB-9 接口有 9 个引脚。其中,DB-25 接口有 4 个数据线(TXD、RXD、RTS、CTS),DB-9 接口有 2 个数据线(TXD、RXD)。另外,RS232 接口还定义了电源线(Vcc)和地线(GND)。

DB-9和DB-25

RS232 的通信方式

RS232 协议支持全双工通信,即可以同时进行数据的发送和接收。在通信过程中,发送方和接收方需要使用相同的波特率,即每秒传输的数据位数。同时,RS232 协议还支持奇偶校验、数据位和停止位的配置。RS232 是基于 UART 协议的,因此其帧格式与 UART 相同。

RS232 的应用场景

RS232 协议广泛应用于计算机与外设之间的通信,如打印机、鼠标、键盘等。此外,RS232 协议还可以用于计算机与计算机之间的通信,如远程登录、文件传输等。

RS232 的缺点

  • 传输距离短:由于 RS232 协议的信号电平较高,传输距离较短,一般不超过 15 米;
  • 电气接口不统一:RS232 协议的电气接口不统一,不同设备之间的连接需要使用转换器;
  • 抗干扰能力差:RS232 协议的抗干扰能力较差,容易受到电磁干扰的影响。

RS485

RS485 协议是一种用于串行通信的电气标准,它定义了在平衡传输线上进行数据传输的电气特性。RS485 协议是一种差分信号通信协议,它使用两根线(A、B)来传输数据,其中 A 线和 B 线之间的电压差来表示逻辑“1”和逻辑“0”。

RS485 的电气特性

RS485 协议规定,在逻辑“1”时,A 线和 B 线之间的电压差为 +2V ~ +6V,在逻辑“0”时,A 线和 B 线之间的电压差为 -2V ~ -6V。因此,RS485 协议的信号电平相对于 RS232 协议较低,可以传输较远距离的数据。同时,RS485 协议规定,在空闲状态时,A 线和 B 线之间的电压差为 0V。

RS485 的通信方式

RS485 协议支持半双工通信,即在同一时刻,只能进行数据的发送或接收。在通信过程中,发送方和接收方需要使用相同的波特率,即每秒传输的数据位数。同时,RS485 协议还支持奇偶校验、数据位和停止位的配置。RS485 是基于 RS232 协议的,因此其帧格式与 RS232 相同。

RS485 的应用场景

RS485 协议广泛应用于工业自动化、智能建筑、智能交通等领域。例如,在工业自动化领域,RS485 协议可以用于传感器、执行器、控制器等设备的通信。在智能建筑领域,RS485 协议可以用于楼宇自动化系统、消防系统等设备的通信。在智能交通领域,RS485 协议可以用于交通信号灯、交通监控设备等设备的通信。

RS485 的优点

  • 传输距离远:由于 RS485 协议的信号电平较低,传输距离较远,一般可达 1200 米;
  • 通信速度快:RS485 协议的通信速率较高,一般可达 10 Mbps;
  • 抗干扰能力强:RS485 协议的抗干扰能力较强,可以抵抗电磁干扰的影响;
  • 电气接口统一:RS485 协议的电气接口统一,不同设备之间的连接不需要使用转换器;
  • 可实现多节点组网

RS485 的缺点

  • 通信速率较低:由于 RS485 协议的信号电平较低,传输速率较慢,一般不超过 10 Mbps;- 通信距离有限:虽然 RS485 协议的传输距离较远,但仍然受到通信速率的限制,因此通信距离仍然有限。

IIC

IIC(Inter-Integrated Circuit)是一种串行多主多从同步通信总线协议。它由 Philips 公司在 1980 年代开发,用于连接微控制器、存储器、传感器等设备。IIC 协议的特点是简单、高效、可靠,广泛应用于嵌入式系统、消费电子等领域。

IIC 的硬件连接

IIC 总线由两根信号线组成:SDA(数据线)和 SCL(时钟线)。SDA 线用于传输数据,SCL 线用于同步数据传输。IIC 总线支持多主多从结构,即多个主设备可以同时进行数据传输,但同一时刻只能有一个主设备进行数据传输。

IIC 的通信过程

流程图如下所示, 具体分为以下几个步骤:

(1) 主机发送起始信号启用总线

(2) 主机发送一个字节数据指明从机地址和后续字节的传送方向

(3) 被寻址的从机发送应答信号回应主机

(4) 发送器发送一个字节数据

(5) 接收器发送应答信号回应发送器

(…) 重复步骤 (4) (5)

(n) 主机发送停止信号释放总线

IIC通信流程图

IIC 的SDA和SCL

在上述的流程中,一共包含以下几种信号/数据:起始信号、一个字节、应答信号、停止信号,下面结合下图逐个介绍

  • 起始信号: 当 SCL 为高电平时,SDA 由高变为低代表起始信号
  • 一个字节: 每个 SCL 周期接收 1 Bit
  • 应答信号: 接收器将 SDA 置为低电平
  • 停止信号: 当 SCL 为高电平时,SDA 由低变为高代表停止信号

IIC数据传输示意图

如上图所示,当起始信号发送后,开始进行数据传送时,在 SCL 的每个时钟脉冲期间传输一个数据位,时钟信号 SCL 为高电平期间(蓝色区域),数据线 SDA 上的数据必须保持稳定,只有在时钟线 SCL 上的信号为低电平期间(红色区域),数据线 SDA 上的高电平或低电平状态才允许变化,这样做保证了数据的有效性,这也是 IIC 协议能够支持发送多个字节的原因。

发送完 8 Bit 数据后,在第 9 个时钟周期(绿色区域),发送方必须释放 SDA 数据线,接受方将数据线置为低电平,表示接收到数据。完成此过程后,如果还有数据发送,则一直重复发送->应答的过程。

从上述流程图可知,在起始信号发送后,第一个字节数据是从主机发送至从机的,这里前 7 位代表从机的地址,第 8 位表示后续字节的发送方向(R/W位),如果 R/W 位为 0,表示主设备将向从设备写数据;如果 R/W 位为 1,表示主设备将从从设备读取数据。

当发送方发送完数据时,主机可以发送停止信号,结束本次传输,释放总线。由于 IIC 协议是半双工通信,指定传输方向后,不能在中途改变传输方向,当发送方发送完数据后,想要改变方向传输数据,有两种做法:主机设备结束本次通信,释放总线,等待下一次传输,下一次传输时方向相反即可,但是这样做,总线释放后,会被其它设备占用,只有等到总线空闲后才能执行下一次传输;另外一种做法是,主机不发送停止信号,而是再次发送起始信号,执行以上流程,指定新的传输方向即可。

IIC 的优点

  • 简单高效:IIC 协议的硬件连接简单,只需要两根信号线,数据传输效率高;
  • 可靠性强:IIC 协议支持多主多从结构,可以同时进行多个设备的通信,可靠性高;
  • 传输距离远:IIC 协议的传输距离较远,一般可达 10 米以上;
  • 通信速率高:IIC 协议的通信速率较高,一般可达 100 kHz、400 kHz、1 MHz 等。

IIC 的缺点

  • 通信速率有限:虽然 IIC 协议的通信速率较高,但仍然受到通信速率的限制,因此通信距离仍然有限;
  • 电气接口不统一:IIC 协议的电气接口不统一,不同设备之间的连接需要使用转换器。

总结

本文介绍了 UART、RS232、RS485 和 IIC 四种常见的通信协议,并分析了它们的优缺点和应用场景。选择合适的通信协议需要根据实际需求进行综合考虑,例如传输距离、通信速率、抗干扰能力、节点数量等因素。

协议串行/并行同步/异步单工/双工传输距离通信速率抗干扰能力多节点组网
UART串行异步全双工
RS232串行异步全双工
RS485串行异步半双工
IIC串行同步半双工
  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值