阡陌 发表于 2023-12-19 01:39:58

串口通信的一些概念



!(https://file.mculoop.com/images/2022/11/banner-1_1668586016.png )

## 串口

常见的以太网、USB 等接口的数据传输方式都是串行的,但我们通常所说的串口(Serial Port),并非是指他们,而是符合 RS-232 标准的一种接口(也可以是 RS-485 、TTL 电平标准,通常是使用 DB-9 连接器的接口)。虽然早在几年前 DB-9 接口几乎从商用电脑上消失殆尽,但由于串口具有实现电路简单、使用方便等优点,它依然活跃在通信系统的各个领域。

<!--more-->



## UART

串口电路的核心是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,缩写为 UART),UART 最早是由 Gordon Bell 设计的。一个完整的 UART 数据帧格式为:起始位 + 数据位 + 校验位(可选) + 停止位。以使用偶校验方式发送 0x55 为例,数据的电平如下:

!(https://file.mculoop.com/images/2022/11/0x55_1668586020.png)

**起始位**:数据帧以 1bit 的起始位开始,起始位固定为逻辑 0 电平。接收方收到起始位后同步发送方的时钟。所谓的异步通信,是指收发两发各自使用自己的时钟,通信时先进行同步操作,使得双方对数据何时开始达成共识,然后按照各自的步调完成通信过程。而同步通信一般由一方提供时钟信号,大家按照一致的拍子工作。

**数据位**:数据位是是通信中的真正有效信息,按从低比特到高比特的顺序传输。位数可以为 5、6、7、8 位,在现代的通信中,通常使用 8 位的数据位,可以发送一个完整的字节数据。

**校验位**:校验位是可选项,用于对数据位进行校验,只有 1 位数据。当使用校验位时,可以选择偶校验(Even)、奇校验(Odd)、Mark 校验、Space 校验。

偶校验位的取值应使得除起始位与停止位之外数据帧有偶数个 1 。

奇校验位正好相反,它的取值应使得除起始位与停止位之外数据帧有奇数个 1 。所以,上例中的校验方式是偶校验,而不是奇校验。

除了常用的偶校验与奇校验之外,还有两个不常用的校验方式:Mark 校验的校验位总为 1,而 Space 校验的校验位总为 0 。

**停止位**:停止位表示帧的结束,固定为逻辑 1 电平。可以配置为 1 位、1.5 位、2 位。



## DTE 与 DCE

串口设备一般可以分为 Data Terminal Equipment(DTE) 与 Data Circuit-terminating Equipment / Data Communication Equipment( DCE) 两类。DTE 一般是终端设备,比如计算机; DCE 一般是通信设备,比如调制解调器等。当然,串口两端所连接的是同类设备也是可以的。



## RS-232

RS-232 是一个串口通信的标准(当前版本为 TIA/EIA-232-F),由美国电子工业协会(EIA)、美国通信工业协会(TIA)制订和维护。在标准中规定了逻辑 0 与 逻辑 1 的电平值。逻辑 1 定义为负电平,有效范围是 -3V ~ -15V,它的信号状态称为 Mark / ON。逻辑 0 定义为正电平,有效范围是 +3V ~ +15V,它的信号状态称为 Space / OFF。如果电平范围在 -3V ~ +3V 之间,表示线路电平值无效,这时候就该查一查是什么原因导致线路失效的了。



## RS-485

在 RS-232 标准下,使用普通线缆通信距离一般能达到 15 米。如何能使通信距离做到更远?除了使用电容量更低的线缆,使用差分通信是个不错的主意。

RS-422(TIA/EIA-422-A) 应运而生,它定义了一种平衡通信接口,数据信号采用差分传输方式,具有抑制共模干扰的能力。可以将传输速率提高到 10Mbps,传输距离延长到 1200 米。但在该标准下,一对双绞线只能实现单向传输,实现双向传输必须使用 5 根线(包含一根地线),不够方便和经济。于是更为常用的 RS-485(TIA/EIA-485-A) 标准,作为 RS-422 的增强标准被制订出来。增加了单总线(一对双绞线)双向通信能力、发送器的驱动能力和冲突 保护特性,扩展了总线共模电压范围等。

RS-485 数据信号采用差分传输方式,使用一对双绞线,将其中一线定义为 A(或 D+),另一线定义为 B(或 D-)。当 VA - VB > +200mV 时,表示逻辑 1;当 VA - VB < -200mV 时,表示逻辑 0。所以在正常状态下,A、B 端子之间的电压差不应小于 200mV。RS-485 采用半双工工作方式,同一时刻只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。当发送器输出使能为禁用状态时,发送器输出处于高阻状态(三态)。

!(https://file.mculoop.com/images/2022/11/487px-RS-485_waveform_1668586028.png)



## DB-9

RS-232 标准规定了采用一个 25 脚的 DB-25 连接器,并对连接器的每个针脚的信号和电平加以规定。后来 IBM 的 PC 机将其简化成了 DB-9 连接器,从而成为事实标准。

!(https://file.mculoop.com/images/2022/11/DA-DB-DC-DD-and-DE-sized-connectors_1668586032.png)

DB-9 的标准叫法是 DE-9,是标准 D 形 E 尺寸接口(连接器),具有 9 个插针(公头,常用于 DTE 一侧)或 9 个针孔(母头,常用于 DCE 一侧),这种形式的接口在当前的串口通信应用中最为常见的。然而在更早的时候,DB-25 首先被用作计算机的串口和并口连接器,以至于流行 DE-9 连接器的时候,大众干脆将 E 顺口为 B,于是才有了 DB-9 一说。 由于 E 尺寸连接器的小巧外形,用途较为广泛,DE-9 也曾被用于网络通信等。此外,E 尺寸连接器还用于大家熟知的 VGA 显示器接口,不过它是 15 针的。

DE-9 连接器有 CD、RXD、TXD、DTR、GND、DSR、RTS、CTS、RI 九个信号针脚,在调制解调器应用场合,这些管脚共同完成通信连接的建立以及通信过程。针脚定义说明:

!(https://file.mculoop.com/images/2022/11/RS-232_DE-9_Connector_Pinouts_1668586036.png)

!(https://file.mculoop.com/images/2022/11/2015-12-17_032926_1668586040.jpg)

在一般串口通信场合,为了连线和操作的方便,3 线通信是很常用的方式,它只是用了 RXD、TXD 、GND 三条线路。如果再用上 RTS、CTS 两条线路,还可以支持硬件流控,也是一种常见的用法。

!(https://file.mculoop.com/images/2022/11/RS-232_DE-9_Connector_5_wires_1668586042.png)



## 串口供电

在低功耗的应用场景下,可以考虑使用串口给目标板供电。思路是使用 DTR 与 RTS 输出 Space 信号(逻辑0,高电平)时产生的正向电压(软件上要做配置)。基本的电路结构如下:

!(https://file.mculoop.com/images/2022/11/chuankougongdian_1668586046.png)



## 参考资料

RS-232 : <https://en.wikipedia.org/wiki/RS-232>
RS-485 : <https://en.wikipedia.org/wiki/RS-485>
D-subminiature : <https://en.wikipedia.org/wiki/D-subminiature>
Universal asynchronous receiver/transmitter : <https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter>


页: [1]
查看完整版本: 串口通信的一些概念