UART 物理层
UART 物理层
UART 只定义了时序协议,没有规定电气标准——”UART 电平”由物理层的具体收发器决定。同样一帧数据,在不同电平标准下以不同电压表示逻辑 0/1。
电平标准
| 标准 | 逻辑 0 | 逻辑 1 | 特点 | 典型场景 |
|---|---|---|---|---|
| TTL/CMOS | 0V | 3.3V / 5V | 板内直连,距离 <1m | MCU ↔ 外设模块 |
| RS-232 | +3~+15V | -3~-15V | 逻辑反相,单端,抗干扰略强,点对点 | PC 老式串口(DB9) |
| RS-485 | 差分(A-B 极性) | 差分 | 差分传输,抗共模干扰,可多点组网,千米级 | 工业总线(Modbus) |
注意:RS-232 的逻辑电平是反的——正电压表示逻辑 0,负电压表示逻辑 1。FPGA/MCU 的 TTL 引脚不能直接连 RS-232 设备,中间必须经过 MAX3232 之类的电平转换芯片。
波特率(Baud Rate)
- 定义:每秒传输的码元(bit)数,单位 bit/s;
- UART 是二进制调制,波特率 = 比特率;
- 收发双方必须约定完全相同的波特率,否则采样点逐位漂移,数据错乱;
- 常用值:9600、19200、38400、57600、115200(最常用)、230400、460800、921600;
- FPGA 实现时由系统时钟分频产生,波特率不是时钟频率的整数倍时会有误差(见协议层”16 倍过采样”一节)。
连接拓扑:点对点
UART 是点对点协议,一对设备之间交叉连接:
graph LR
A["设备 A<br/>TX RX"]
B["设备 B<br/>TX RX"]
A -- "TX ──> RX" --> B
B -- "TX ──> RX" --> A
A --- GND[GND 共地]
B --- GND
- TX 接对方 RX(交叉),GND 必须共地——没有共地就没有参考电平;
- 没有寻址、没有总线仲裁,只能一对一。
📌 待补图:USB 转串口模块(CH340/CP2102)与 FPGA 开发板连接原理图
与 FPGA 的连接
FPGA 引脚直接输出 TTL 电平的 UART 信号:
- FPGA → 模块:TX 引脚直连(电平匹配时);
- FPGA ↔ PC:经 USB 转串口芯片(CH340、CP2102、FT232),芯片内部完成 USB ↔ TTL 转换;
- 电平不匹配时(如 5V 模块配 3.3V FPGA):需电平转换电路,注意 FPGA 引脚耐压。
传输距离与速率限制
- TTL 电平抗干扰弱,线缆过长时边沿劣化,一般控制在 1 米以内;
- 距离远(>1m)或环境嘈杂时应改用 RS-232 / RS-485 收发器,协议帧完全不变,只换物理层。