UART 与串口描述的是嵌入式系统中最常见的异步串行通信方式:UART 是芯片里的收发硬件模块,串口是工程上对这类物理连接、通信参数和操作系统设备节点的统称。

vault 中已有一篇普通笔记 UART,这张卡片聚焦术语边界和排障模型。

核心问题

两个数字设备要交换少量字节,不一定需要复杂总线。最小可用方案是:双方约定波特率和帧格式,一边按时间节拍把字节拆成 bit 发出去,另一边按同样节拍采样还原字节。

UART/串口解决的是“用少量线缆、低成本硬件、简单软件栈做点对点或低速设备通信”的问题。它常用于:

  • 启动日志和调试控制台。
  • MCU 与传感器、蓝牙/Wi-Fi/GNSS 模块通信。
  • PC 通过 USB 转串口访问设备。
  • 工业设备的低速控制和配置链路。
  • 设备的 下行口

核心对象

对象含义工程关注点
UART controller芯片内部的异步串行收发硬件寄存器、FIFO、中断、DMA、波特率分频
TXTransmit,发送引脚TTL 串口中要接对端 RX
RXReceive,接收引脚TTL 串口中要接对端 TX
GND公共参考地TTL/CMOS 串口通常必须共地
baud rate波特率,每秒符号数双方必须一致,常见 9600、115200、921600
frame format帧格式数据位、校验位、停止位要一致
transceiver电平转换或差分收发芯片TTL、RS-232、RS-485 的电气层不同
tty device操作系统中的串口设备节点Linux 常见 /dev/ttyS*/dev/ttyUSB*/dev/ttyACM*

核心机制

1. 异步传输依赖双方约定时钟

UART 没有单独时钟线。发送方和接收方提前约定波特率,接收方在检测到起始位后按本地时钟采样。

一个常见 8N1 帧可以写成:

idle  start  data bits           stop
  1     0    D0 D1 D2 D3 D4 D5 D6 D7  1

其中:

  • 8 表示 8 个数据位。
  • N 表示 no parity,没有奇偶校验位。
  • 1 表示 1 个停止位。
  • D0 先发,表示低位先行。

如果波特率或帧格式不一致,接收方会在错误时间点采样,表现为乱码、丢字节、校验错误或 framing error。

2. UART 不是电平标准

UART 描述的是异步串行收发逻辑,不等于某一种电压。工程上常见几种承载方式:

说法典型含义关键区别
TTL/CMOS 串口MCU 引脚直接输出 3.3V 或 5V 逻辑短距离、共地、不能直接接 RS-232
RS-232使用正负电压和反相逻辑的传统串口电气标准常见于老式 PC/工业设备,电平不同
RS-485差分半双工或全双工电气层适合长距离、多节点、抗干扰
USB 转串口PC 侧 USB,设备侧 UART/RS-232/RS-485Linux 下常见 /dev/ttyUSB*

把 TTL 串口直接接到 RS-232 口可能损坏设备;把 RS-485 的 A/B 线当成 UART 的 TX/RX 接也不会工作。

3. 软件看到的是字节流

多数操作系统把串口抽象成字节流设备。应用常做:

open("/dev/ttyUSB0")
set baud=115200, data=8, parity=none, stop=1
write(command_bytes)
read(response_bytes)

串口本身不理解“命令”“寄存器”“地址”“校验和”。这些属于上层 线上协议 或设备私有协议。比如 Modbus RTU 会在串口字节流上再定义地址、功能码、寄存器和 CRC。

工程用途

  • bring-up:通过串口看 bootloader、kernel 和早期用户态日志。
  • 设备调试:进入 shell、发送 AT 指令、读取传感器状态。
  • 模块通信:连接 GNSS、蓝牙、Wi-Fi、4G、IMU 或电机驱动模块。
  • 工业控制:通过 RS-485 承载多节点轮询协议。
  • 制造测试:生产线使用串口烧录、校准、读取 SN 或执行自检。

调试串口问题时,通常按这个顺序查:

电平标准 -> GND/接线 -> TX/RX 交叉 -> 波特率 -> 8N1/校验 -> 协议帧 -> 应用逻辑

边界与常见坑

  • UART 不等于 RS-232/RS-485:UART 是收发逻辑,RS-232/RS-485 是电气层或物理层标准。
  • 串口不自带地址和重传:点对点 UART 字节流没有网络意义上的路由、确认、拥塞控制。
  • TX/RX 方向以本设备命名:本设备 TX 要接对端 RX,不是同名相接。
  • 只接 TX/RX 不一定够:TTL 串口通常还要共地;某些 RS-232 设备还依赖 RTS/CTS 等流控线。
  • /dev/ttyUSB0 不稳定:插拔顺序变化会改变编号,量产或长期部署应结合 udev、serial 或 USB path 固定命名。
  • 乱码优先查参数和电平:乱码不一定是协议错,常见原因是波特率、校验位、电平标准或地线问题。

相关术语