第一篇:UART基础与协议层详解
1. 通信接口背景
1.1 串行通信 vs. 并行通信
- 核心差异 :
并行通信 :同时传输多个比特(如8/16位),通过多根数据线并行传输,典型接口如PCI总线。
优势 :高带宽、高实时性;
劣势 :布线复杂、抗干扰差、成本高(需要多根线)。
串行通信 :逐比特顺序传输,仅需单根数据线(全双工需两根)。
优势:低成本、长距离传输、抗干扰强(如差分信号);
劣势 :带宽较低。 - 应用场景对比 :
并行通信:高速短距场景(如CPU与内存的DDR接口)。
串行通信:嵌入式系统(UART、SPI、I2C)、工业总线(RS-485)、高速接口(PCIe、USB)。
1.2 异步通信的核心概念
- 异步通信特性 :
无统一时钟信号,依赖双方预定义的波特率(Baud Rate)同步。
数据帧以“起始位”触发接收端采样,通过“停止位”标识帧结束。 - 关键优势 :无需时钟线,硬件成本低;适用于间歇性数据传输。
- 典型应用 :
微控制器与传感器通信(如GPS模块、温湿度传感器)。
调试接口(如ARM Cortex-M的SWO输出)。
工业设备控制(PLC与HMI交互)。
2. UART协议层规范
2.1 数据帧结构深度解析
- 标准数据帧格式 (以8N1为例):
[Start Bit (1) | Data Bits (8) | Parity Bit (None) | Stop Bit (1)]
- 各字段功能 :
起始位 (逻辑低电平):标识数据帧开始,触发接收端同步。
数据位 (5-9位):实际传输数据,LSB(最低有效位)优先传输。
校验位 (可选):奇偶校验(Parity)、Mark(固定1)、Space(固定0)。
停止位 (1/1.5/2位):逻辑高电平,标识帧结束,提供帧间隔缓冲。
2.2 波特率(Baud Rate)与比特率(Bit Rate)
- 数学关系 :
Bit Rate (bps)=Baud Rate×每符号携带比特数Bit Rate (bps)=Baud Rate×每符号携带比特数
对于UART,每符号仅携带1比特,因此 Bit Rate = Baud Rate 。 - 示例 :波特率115200 Baud = 每秒传输115200比特。
- 波特率误差容忍度 :
接收端采样时钟偏差需满足: 误差<1/(2×(数据位数+2))×100%
即: 误差<1/(2×(数据位数+2))×100%
计算示例 (8N1格式):
误差需 < 1/(2×10) = 5% → 波特率偏差需控制在±5%以内。
2.3 校验机制
-
奇偶校验(Parity Check) :
奇校验 :数据位+校验位中“1”的个数为奇数。
偶校验 :数据位+校验位中“1”的个数为偶数。 -
硬件实现 :通过异或门链生成校验位(Verilog示例):
verilogassign parity = ^data; // 异或所有数据位
-
Mark/Space校验 :
-
Mark校验 :校验位固定为1(逻辑高电平)。
-
Space校验 :校验位固定为0(逻辑低电平)。
-
应用场景 :用于简单的帧完整性检查,非主流方案。
2.4 误差容忍度分析
- 时钟偏差影响 :
接收端采样时钟与发送端偏差累积可能导致采样点偏移。 - 最大允许偏差公式 :
最大偏差=误差<1/(2×(数据位数+2))×100% 误差<1/(2×(数据位数+2))×100% - 示例 (8N1格式):
1/2×10=5% → 若波特率为115200,允许时钟偏差±5760 Hz。 - 噪声干扰 :
过采样技术(如16x采样)可抑制瞬时毛刺。
中点采样策略(取连续采样的中间值)提升可靠性。
3. 物理层标准扩展
3.1 RS-232电气规范
- 电平标准 :
逻辑1 :-3V ~ -15V; 逻辑0 :+3V ~ +15V。
传输距离 :典型15米(速率<20kbps)。
电平转换芯片 (如MAX232):将TTL电平(0/3.3V)转换为RS-232电平。 - 缺点 :
单端信号易受共模噪声干扰。
不支持多节点总线拓扑。
3.2 RS-422/RS-485差分信号
- 差分信号优势 :
抗共模噪声能力强,适合工业环境。
支持多点通信(RS-485最多32节点)。
传输距离可达1200米(速率100kbps时)。 - 电气特性 :
RS-422 :全双工,两对差分线(Tx+/Tx-,Rx+/Rx-)。
RS-485 :半双工,单对差分线共享传输。
3.3 现代低功耗接口
- LVTTL(低压TTL) :
电平标准:逻辑0(0V)、逻辑1(3.3V或1.8V)。
应用:SoC内部模块间通信(如FPGA与Flash芯片)。
优点:低功耗、兼容CMOS工艺。 - 隔离式UART :
使用光耦或磁耦隔离(如ADI ADuM1201),防止地环路干扰。
典型应用:工业电机控制、医疗设备。
4. UART局限性讨论
4.1 点对点通信限制
- 拓扑限制 :仅支持单发送端与单接收端,无法直接组网。
- 解决方案 :
使用RS-485构建多节点网络。
通过协议层定义地址字段(如Modbus RTU)。
4.2 硬件流控缺失
- 流控问题 :无RTS/CTS信号时,缓冲区溢出导致数据丢失。
- 软件流控(XON/XOFF) :
接收方发送XOFF(0x13)暂停发送方传输,XON(0x11)恢复。
缺点 :增加协议复杂度,无法应对高速数据流。
4.3 高速长距离传输挑战
- 替代方案 :
USB转UART桥接芯片(如FTDI FT232):提供USB 2.0高速接口(12Mbps)。
以太网转UART模块(如WIZnet W5500):通过TCP/IP封装实现远程传输。
附录:关键公式与参数表
参数 | 公式/数值 | 说明 |
---|---|---|
波特率误差容忍度 | ± (1/2N) ×100% | N=数据位+起始位+停止位 |
RS-232逻辑电平 | -15V ~ -3V (1), +3V ~ +15V (0) | 需电平转换芯片 |
奇偶校验生成 | ![]() | 异或运算生成校验位 |