嵌入式笔记系列——UART:TTL-UART、RS-232、RS-422、RS-485
文章目录
- 一、UART
- 1. 物理连接
- 2. 数据帧格式(Frame Structure)
- 典型 8N1 帧格式(最常见):
- 3. 传输时序与波特率
- 4. 配置参数(通信双方必须一致)
- 5. 工作流程(以 8N1 为例)
- 6. 优缺点
- 7. 实际应用示例
- 8.TTL-UART、RS-232、RS-422、RS-485介绍
- ①核心:UART - 通信的“协议”
- ②TTL-UART - 芯片级的“语言”
- ③RS-232 - 老而弥坚的“标准串口”
- ④RS-422 - 走向“平衡传输”
- ⑤RS-485 - 工业应用的“王者”
- ⑥总结与类比
- a. RS-485 与 RS-422区别
- a.1 最核心的区别:发送器的数量和能力
- a.2 RS-485 与 RS-422 详细对比表
- a.3 核心区别详解与类比
- a.3.1 发送器数量:这是“万恶之源”
- a.3.2 通信模式:由核心区别自然衍生
- a.3.3 电路实现:使能引脚(DE/RE)
- a.4 如何选择?
- a.5 总结
- ⑦学习与实践建议
- 9. 小结(一句话记忆)
一、UART
UART(Universal Asynchronous Receiver/Transmitter)是一种异步串行通信协议,广泛应用于嵌入式系统、单片机、FPGA、PC 与外设之间的通信。以下从物理连接、数据帧格式、传输时序、配置参数、优缺点等方面详细解析 UART 协议。
1. 物理连接
- 仅需两根数据线:
- TX(Transmit):发送端
- RX(Receive):接收端
- 全双工通信:TX 和 RX 是独立的,可同时收发数据。
- 无需时钟线:属于异步通信,通信双方需预先约定好波特率。
2. 数据帧格式(Frame Structure)
字段 | 位数 | 电平 | 说明 |
---|---|---|---|
起始位 | 1 bit | 逻辑 0 | 表示数据帧开始 |
数据位 | 5~9 bits | 逻辑 0/1 | 实际传输数据(常用 8 bits) |
校验位 | 0/1 bit | 逻辑 0/1 | 可选,奇/偶校验 |
停止位 | 1~2 bits | 逻辑 1 | 表示数据帧结束 |
典型 8N1 帧格式(最常见):
| 起始位 | 数据位 | 校验位 | 停止位 |
|---------|---------|----------|---------|
| 1 | 8 | 无 | 1 |
3. 传输时序与波特率
- 波特率(Baud Rate):每秒传输的 bit 数,单位为 bps(bits per second)。
- 常见值:9600、19200、38400、57600、115200、921600 等。
- 示例:115200bps 表示每秒传输 115200 个 bit,每个 bit 持续约 8.68μs。
- 异步传输:每帧独立,帧间空闲线为高电平(逻辑 1)。
4. 配置参数(通信双方必须一致)
参数 | 说明 |
---|---|
波特率 | 通信速率(如 9600、115200) |
数据位 | 每帧数据位数(5~9,常用 8) |
校验位 | 无校验、奇校验、偶校验 |
停止位 | 1 位、1.5 位或 2 位(常用 1 位) |
流控 | 无流控、硬件流控(RTS/CTS) |
5. 工作流程(以 8N1 为例)
- 空闲状态:线路保持高电平(逻辑 1)。
- 起始位:发送端拉低线路(逻辑 0),接收端检测到下降沿后启动接收。
- 数据位:按低位到高位顺序发送 8 位数据。
- 校验位(可选):发送端计算奇偶校验位并附加。
- 停止位:发送端拉高线路(逻辑 1),接收端校验数据并准备接收下一帧。
6. 优缺点
优点 | 缺点 |
---|---|
硬件简单,仅两根线 | 无多主从机制,仅点对点 |
全双工通信 | 无硬件流控时易丢数据 |
成本低,易实现 | 抗干扰能力弱,距离受限(RS-232 约 15 米) |
7. 实际应用示例
-
MCU ↔ PC:通过 USB-to-UART 芯片(如 CH340、FT232)连接电脑串口助手。
-
MCU ↔ 传感器:如 GPS 模块、蓝牙模块(HC-05)等。
-
调试打印:嵌入式开发中常用 UART 输出日志信息。
-
传输示例:以9600,8-N-1(9600波特率,8个数据位,没有校验位,1位停止位)为例,这是目前最常用的串口配置,现在我们传输“O”“K”两个ASCII值,“O”的ASCII为79,对应的二进制数据为01001111,“K”对应的二进制数据为01001011,传输的格式数据如下图所示:
8.TTL-UART、RS-232、RS-422、RS-485介绍
①核心:UART - 通信的“协议”
首先要明白最重要的一点:UART是核心协议,而RS-232、RS-422、RS-485是物理层的电气标准。它们的关系就像“交通规则”和“道路类型”。
- UART:中文叫通用异步收发传输器。它是一种异步串行通信协议。
- “异步”:指通信双方没有统一的时钟信号线,而是各自使用自己的时钟,并通过事先约定好的波特率(每秒传输的比特数)来同步。
- “串行”:数据一位一位地按顺序在一条线上传输。
- 它做什么:UART负责将单片机内部的并行数据(比如8位、32位的数据总线)转换成串行数据流一位一位地发出去,同时也把接收到的串行数据流转换回并行数据给CPU处理。
- 它在哪里:UART通常是微控制器(MCU)内部的一个外设模块。你通过配置它的寄存器来设置波特率、数据位、停止位、校验位等参数。
- 它的信号:UART通常使用TTL电平。
②TTL-UART - 芯片级的“语言”
- TTL:是“Transistor-Transistor Logic”的缩写,是一种电平标准。
- 电平:指用什么电压范围代表逻辑
1
和逻辑0
。- TTL电平:逻辑
1
-> +3.3V 或 +5V;逻辑0
-> 0V。
- TTL电平:逻辑
- TTL-UART:就是指信号电平为TTL电平的UART通信。
- 特点:
- 传输距离很短(通常<0.5米 ),因为高电平(3.3V/5V)很容易受到外界干扰导致信号衰减和失真。
- 抗干扰能力差。
- 点对点通信(一对一)。
- 你在哪能看到它:单片机开发板的引脚上! 比如ESP32、STM32、Arduino Uno上的
TX
(发送) 和RX
(接收) 引脚。你绝对不能把这两个引脚直接接到电脑的RS-232串口上,会烧坏芯片! 因为电平不匹配。
- 特点:
特性 | TTL-UART |
---|---|
电平标准 | TTL (3.3V/5V) |
通信方式 | 全双工 (发送和接收可同时进行) |
拓扑结构 | 点对点 |
传输距离 | 非常短 (<0.5m) |
常见场景 | MCU内部、板级器件间通信(如GPS、蓝牙模块) |
③RS-232 - 老而弥坚的“标准串口”
为了解决TTL电平距离短、抗干扰差的问题,人们制定了RS-232标准。
- 它是什么:一种串行通信的电气标准,它规定了电平、连接器形状、引脚定义等。
- 电平:
- 逻辑
1
-> -3V ~ -15V (称为“负逻辑”) - 逻辑
0
-> +3V ~ +15V
- 逻辑
- 特点:
- 传输距离显著延长(可达15米左右)。
- 抗干扰能力比TTL强,因为使用了更高的电压和负电压,噪声容限更大。
- 仍然是点对点全双工通信。
- 接口通常为DB9或DB25针式连接器。
- 你在哪能看到它:老式电脑的COM口、工控设备、一些医疗仪器等。现在的新电脑基本没有这个接口了。
- 重要提示:MCU的TTL-UART信号必须通过一个“电平转换芯片”(如MAX3232)转换成RS-232电平,才能与标准的RS-232设备连接。
特性 | RS-232 |
---|---|
电平标准 | ±3~15V (负逻辑) |
通信方式 | 全双工 |
拓扑结构 | 点对点 |
传输距离 | ~15米 |
常见场景 | 电脑COM口、工控设备、调制解调器 |
④RS-422 - 走向“平衡传输”
RS-232虽然解决了距离问题,但速度还是上不去,距离再远也不行。于是有了更先进的RS-422。
-
核心改进:采用了差分信号(平衡传输)。
- 差分信号:用两条线
A
和B
来传输一个信号,通过检测这两条线之间的电压差来判断逻辑。- 逻辑
1
->(A-B) < -0.2V
- 逻辑
0
->(A-B) > +0.2V
- 逻辑
- 差分信号:用两条线
-
优点:
- 极强的抗共模干扰能力。外界干扰会同时作用于两条线,电压差基本不变,从而被抵消。
- 传输距离更远(可达1200米)。
- 速度更高。
-
通信方式:单工或全双工。通常是一主对多从,但同一时刻只能有一个发送器工作。
-
拓扑结构:点对多(单主多从)。
特性 | RS-422 |
---|---|
电平标准 | 差分信号 (±0.2V以上) |
通信方式 | 全双工 (4线制) 或 半双工 (2线制) |
拓扑结构 | 点对多点(单主多从) |
传输距离 | 可达1200米 (速率较低时) |
常见场景 | 工业环境、长距离布线 |
⑤RS-485 - 工业应用的“王者”
RS-485是RS-422的扩展和增强,是当今工业领域应用最广泛的串行通信标准。
-
与RS-422的关系:RS-485几乎继承了RS-422的所有优点(差分传输、长距离、高抗扰)。
-
关键增强:
- 真正的多点总线:允许在一条总线上挂接多达32个甚至128个收发器(通过增加中继器可更多)。
- 所有设备都可以作为发送器,但需要遵循“一问一答”的协议(如Modbus),避免冲突。
-
通信方式:半双工(2线制,最常用)或全双工(4线制)。
-
特点:
- 多节点组网能力。
- 极佳的抗干扰性和长距离传输特性。
- 需要软件协议来管理总线访问(如Modbus RTU)。
-
你在哪能看到它:工业自动化(PLC、传感器、变频器)、楼宇自动化、安防系统(门禁、摄像头)等。
特性 | RS-485 |
---|---|
电平标准 | 差分信号 (±0.2V以上) |
通信方式 | 半双工 (2线制,最常用) 或 全双工 (4线制) |
拓扑结构 | 多点总线(多主或多从) |
传输距离 | 可达1200米 (速率较低时) |
常见场景 | 工业控制网络、多设备通信 |
⑥总结与类比
这里有一个简单的类比:
标准 | 类比 | 特点 |
---|---|---|
TTL-UART | 两个人面对面小声说话 | 距离极近,只能一对一,容易听错 |
RS-232 | 两个人拿着喇叭喊话 | 距离远了,但还是一对一,噪声大时听不清 |
RS-422 | 一个人用麦克风讲话,很多人用耳机听 | 距离很远,一对多,抗干扰强,但听众不能发言 |
RS-485 | 一群人共用一对讲频道 | 距离远,多对多,抗干扰强,但要按规则轮流发言 |
a. RS-485 与 RS-422区别
a.1 最核心的区别:发送器的数量和能力
- RS-422:规定总线上只能有一个发送器(Transmitter),但可以有多个接收器(Receiver)。这是一个单主(1个发送器)多从(多个接收器) 的系统。
- RS-485:规定总线上可以有多个发送器(通常最多32个),每个设备都可以作为发送器或接收器。这是一个多主或多从的系统。
这个硬件上的根本差异,像一颗种子,生长出了它们所有的其他区别。用一个详细的对比表格和解释来展开。
a.2 RS-485 与 RS-422 详细对比表
特性 | RS-422 | RS-485 |
---|---|---|
官方名称 | TIA/EIA-422 | TIA/EIA-485 |
核心区别 | 只能有1个发送器 | 允许多个发送器 (e.g., 32, 128) |
通信模式 | 全双工 (4线制) • 一对线只用于发送 (A-B) • 另一对线只用于接收 (Y-Z) | 半双工 (2线制, 最常用) • 一对线轮流用于发送和接收 (A-B) 或 全双工 (4线制) |
拓扑结构 | 点对多点 (1主发,多从收) | 多点总线 (多主或多从,所有设备都可发可收) |
差分电压 | 逻辑 1: (A - B) < -0.2V 逻辑 0: (A - B) > +0.2V | 逻辑 1: (A - B) < -0.2V 逻辑 0: (A - B) > +0.2V |
传输距离 | 可达 1200米 (在较低速率下) | 可达 1200米 (在较低速率下) |
数据速率 | 距离短时可达 10 Mbps | 距离短时可达 10 Mbps |
典型应用场景 | • 点对点高速传输 • 一主设备广播数据,多从设备接收 • 工业摄像头、高速数据记录 | • 工业自动化 (PLC, 传感器, 变频器) • 楼宇自控、安防系统 • 任何需要组网的场合 |
a.3 核心区别详解与类比
a.3.1 发送器数量:这是“万恶之源”
-
RS-422 的设计初衷是延长通信距离和提高抗干扰能力,并支持一个信号源驱动多个接收端。它像一个广播站:
- 有一个广播塔(主设备发送器)。
- 成千上万的收音机(从设备接收器) 可以收听。
- 收音机不能反向对广播塔说话。如果要双向通信,RS-422需要单独再建立一条“返回通道”(即4线全双工),但返回通道同样只能有一个发送器。
-
RS-485 的设计初衷是创建真正的多点通信网络。它像一个对讲机频道:
- 很多人都拥有对讲机(每个设备都可发可收)。
- 大家共用同一个频道(总线)。
- 规则是:同一时刻只能有一个人按下按键讲话(作为发送器),其他人只能听(作为接收器)。讲完后要说“完毕”,然后松开按键,其他人才能接着讲。
- 这个“规则”就是软件协议(如Modbus),它来协调谁在什么时候“发言”,避免冲突。
a.3.2 通信模式:由核心区别自然衍生
- RS-422 因为发送和接收通道是独立的(各有1对差分线),所以可以轻松实现全双工(同时收和发)。
- RS-485 为了实现多设备挂接在一对线上,通常采用半双工模式。这样布线更简单,成本更低,是绝大多数应用的首选。RS-485也支持全双工(4线制),但这需要两对线,并且实际上创建了两个独立的信道(一个主发从收,一个从发主收),失去了2线制简单布线的优势。
a.3.3 电路实现:使能引脚(DE/RE)
- 由于RS-485设备需要随时在发送和接收模式之间切换,所以RS-485收发器芯片(如MAX485、SP3485)都有一个独有的发送使能(DE) 和接收使能(RE) 引脚(有时合并为一个引脚控制)。
- 当你的设备要发送数据时,MCU必须先将DE引脚拉高,激活发送器,然后再通过TX引脚发送数据。发送完成后,再将DE拉低,切换回接收模式,监听总线。
- RS-422不需要这个功能,因为它的发送器和接收器是独立且一直工作的。
a.4 如何选择?
- 选择 RS-422:当你需要高速、长距离、单向传输或全双工点对点通信时。例如,一台计算机同时向多个显示器发送数据。
- 选择 RS-485:当你需要构建一个多设备的网络,设备之间需要双向通信时。这是工业环境中的绝对主流。几乎所有需要联网的工业设备(PLC、仪表、传感器)都首选RS-485接口。
a.5 总结
一句话概括:
RS-422是一个优秀的“广播系统”,而RS-485是一个强大的“局域网”。
RS-485在RS-422的基础上,通过允许“多个发送器”这一革命性改进,成为了构建分布式设备网络的首选标准,这也是它在工业领域远比RS-422更常见的原因。
⑦学习与实践建议
- 从TTL-UART入手:在你学习的初期,最常打交道的就是TTL-UART。用一根USB转TTL串口线(CH340、CP2102、FT232等芯片)连接你的电脑和开发板,通过串口助手工具进行打印调试(
printf
)和收发数据。这是嵌入式开发的“printf调试大法”,至关重要。 - 理解电平转换:做一个实验,尝试用MAX3232芯片将你的开发板TTL信号转换成RS-232电平,连接一个老设备(如果有的话)。
- 深入了解RS-485:当你需要做项目,比如连接多个传感器或控制多个电机时,RS-485将是你的首选。学习如何使用MAX485这类收发器芯片,并了解其使能引脚(DE/RE) 的控制时序(切换发送和接收模式)。同时,学习一种运行在RS-485之上的应用层协议,如Modbus,这是工业领域的必修课。
9. 小结(一句话记忆)
UART 是“两根线、异步、全双工”的串口协议,以“起始位+数据位+校验位+停止位”为帧格式,通信前需约定波特率、数据位、校验位、停止位等参数。