白话串口:用生活例子看懂串口通信的所有核心概念
1.串口通信的基本概念
UART 是通用异步接收器/发送器(Universal Asynchronous Receiver/Transmitter) 的简称,我们通常称之为串口通信,它是一种设备间最为常用的通讯方式,虽然其通信速率低,但是由于接线简单、协议便于理解等特点,大部分电子设备都支持通过该通讯方式进行数据传输、通信、控制、仿真调试等操作。很多设备或者模块甚至都会提供专用的串口接口用于通信和控制,如 GPRS 模块、蓝牙/WiFi 透传模块、陀螺仪和 LCD 屏幕等。

UART 仅用一根数据接收线和一根数据发送线就能实现全双工通信,采用 TTL/CMOS 电平。典型的串口通信使用 3 根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的 TX 和 RX 交叉连接并且 GND 相连才可正常通信,如下图所示:
在单片机 UART 外设的内部结构中,数据总线和串口的发生器/接收器以并行方式连接,数据在发射端通过串行方式发送到接收端,接收端将串行数据转换为并行数据以供接收设备使用。


UART 无需外置时钟线,但需要通信的双方间约定好起始位、主体数据、校验位以及停止位等参数才能正常通信,为异步通信方式。

2.串口数据包格式
在 UART 中,传输的方式是数据包的形式。一个数据包由起始位、有效数据位、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据,其组成见下图:


各个位的含义和可选参数如下:
- 起始位 Start bits / 停止位 Stop bits :
串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑 0 的数据位表示,而数据包的停止信号可由 1 或 2 个逻辑 1 的数据位表示 - 有效数据位 Data bits :
在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为 5、6、7 或 8 位长 - 校验位 Parity bits :
在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验 (odd)、偶校验(even)、0 校验 (space)、1 校验 (mark) 以及无校验 (noparity)。
![05.png]()
除了各个位的参数需要设定相同外,想要正常进行两个设备的串口通信,还需要正确设置两个设备的波特率,即每个码元的长度,以便对信号进行解码,常见的波特率为 4800、9600、115200 等。
![06.png]()
3.串口数据传输流程
以下,我们以串口中的一个数据包收发过程为例,讲解串口数据传输的正确流程:
- 首先,发送设备的数据总线通过并行方式将数据传输到串口发射器:

- 串口发射器将起始位、奇偶校验位和停止位添加到数据帧中:

- 串口发射器向另一个设备的串口接收器发送数据包,串口接收器以预先配置的波特率对数据线进行采样:

总体流程如下所示:
- 串口传输数据线在不传输数据时通常保持在高电平,为了开始数据传输,串口发射器将传输线从高电平拉至低电平,持续 1 个时钟周期。当接收设备的串口接收器检测到高电压到低电压的转变时,它开始以设定好的波特率频率进行采样,并读取数据帧中的位:

- 数据帧包含正在传输的实际数据,如果使用奇偶校验位,它的长度可以是 5 位到 8 位。如果不使用奇偶校验位,则数据帧可以是 9 位长。在大多数情况下,数据首先以最低有效位发送:

- 接收设备的串口接收器读取数据帧后,统计数据帧中值为高电平的个数,并检查总数是偶数还是奇数。如果奇偶校验位设置为偶校验,则数据帧中的高电平总数应为偶数;如果奇偶校验位为偶校验,则数据帧中的高电平总数总计应为奇数。
当奇偶校验位与数据匹配时,串口接收器判断接收数据正确;反之则接收数据错误(电路中的噪声/传输中断等原因导致)

- 为了发出数据包结束发送的信号,串口发射器将数据传输线从低电平到高电平,持续时间为 1 到 2 个时钟周期:

- 串口接收器接收完整个数据包后,丢弃掉其中的起始位、奇偶校验位和停止位:

- 串口接收器将串行数据转换回并行数据并将其传输到接收设备的数据总线:


在 UART 中,传输的方式是数据包的形式。一个数据包由起始位、有效数据位、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据


浙公网安备 33010602011771号