文章目录1. 物理连接2. 帧格式2.1 起始位2.2 数据位2.3 奇偶校验位2.4 停止位2.5 关键规则3. 波特率与采样4. 流控5. 错误检测6. 优缺点7. 常见应用8. 与 SPI、I2C 的简单对比UART 是Universal Asynchronous Receiver/Transmitter的缩写中文常叫“通用异步收发器”。严格说它是一类硬件外设但在嵌入式领域通常把它的异步串行通信帧格式称为 UART 协议。它的核心特点异步、串行、全双工、点对点。没有时钟线收发双方靠预先约定的波特率同步。1. 物理连接典型 UART 只需两根信号线TX发送RX接收两个设备连接时TX 接对方 RXRX 接对方 TX并且通常还要共地 GND。UART 本身只定义逻辑时序不定义电气电平。常见物理层标准有TTL UART0V/3.3V/5V常见于 MCU、模块之间距离很短。RS-232负逻辑±3~15V抗干扰稍好距离约十几米。RS-485差分信号可多点、半双工或全双工距离可达上千米低速传输。RS-422差分、全双工、点对多点。2. 帧格式UART 数据按“帧”发送。一个典型帧如下空闲位 起始位 D0 D1 D2 D3 D4 D5 D6 D7 校验位 停止位 空闲 1 0 ... 数据位LSB 先发 ... 可选 1 12.1 起始位当不传输数据时 UART 数据传输线通常保持高电压电平。若要开始数据传输发送UART 会将传输线从高电平拉到低电平并保持1 个时钟周期。当接收 UART 检测到高到低电压跃迁时便开始以波特率对应的频率读取数据帧中的位。2.2 数据位数据帧包含所传输的实际数据。如果使用奇偶校验位数据帧长度可以是5 位到 8 位。如果不使用奇偶校验位数据帧长度可以是9 位。在大多数情况下数据以最低有效位优先方式发送。2.3 奇偶校验位奇偶性描述数字是偶数还是奇数。通过奇偶校验位接收 UART判断传输期间是否有数据发生改变。电磁辐射、不一致的波特率或长距离数据传输都可能改变数据位。校验位可以配置成 1 位偶校验或 1 位奇校验或无校验位。接收UART 读取数据帧后将统计数值为 1 的位检查总数是偶数还是奇数。如果奇偶校验位为0 偶数奇偶校验则数据帧中的1或逻辑高位总计应为偶数。如果奇偶校验位为 1 奇数奇偶校验则数据帧中的1 或逻辑高位总计应为奇数。当奇偶校验位与数据匹配时UART 认为传输未出错。但是如果奇偶校验位为0 而总和为奇数或者奇偶校验位为 1 而总和为偶数则UART 认为数据帧中的位已改变。2.4 停止位为了表示数据包结束发送 UART 将数据传输线从低电压驱动到高电压并保持1 到 2 位时间。2.5 关键规则空闲状态为高电平 1起始位为低电平 0接收方检测下降沿后开始同步数据位通常 5~9 位常用 8 位低位先发LSB first奇偶校验可选None、Even、Odd、Mark、Space停止位为高电平 1常见 1 位、1.5 位或 2 位常见配置写作115200 8N1意思是波特率 1152008 位数据无校验1 位停止位。例如发送字节0x41二进制是01000001LSB 先发数据位顺序为D01, D10, D20, D30, D40, D50, D61, D708N1 下线上大致为空闲 1 | 起始 0 | 1 0 0 0 0 0 1 0 | 停止 13. 波特率与采样UART 没有时钟线双方必须约定相同波特率。UART 中通常一个符号表示 1 bit所以波特率等于比特率。常见波特率9600192003840057600115200更高230400、460800、921600甚至几 Mbps接收方通常采用16 倍过采样检测起始位下降沿后在起始位中点确认然后在每个数据位的中点采样。波特率误差一般要求控制在2%~3% 以内否则容易错位。4. 流控当接收方处理不过来时需要流控防止丢数据。硬件流控RTS/CTSRTSRequest To SendCTSClear To Send发送方检查 CTS接收方用 RTS 表示能否继续接收。软件流控XON/XOFFXON0x11继续发送XOFF0x13暂停发送缺点是不适合传输任意二进制数据因为控制字符可能出现在数据中。5. 错误检测UART 帧本身能提供有限错误检测奇偶校验错误校验位不匹配帧错误停止位不是预期的高电平噪声错误采样时发现电平不稳定溢出错误接收缓冲区满新数据覆盖旧数据UART 没有 CRC可靠性有限。如果需要可靠传输通常要在 UART 之上加协议比如添加帧头、长度、CRC、应答和重传。6. 优缺点优点简单、成本低、占用引脚少不需要共享时钟支持全双工MCU、PC、模块普遍支持适合调试、控制、低中速通信缺点通常只能点对点没有地址和总线仲裁机制速率和距离受物理层限制错误检测弱双方配置必须一致波特率、数据位、校验、停止位、流控7. 常见应用MCU 调试串口、printf 重定向GPS、蓝牙、WiFi、4G 模块通信PC 串口、USB 转串口工业控制中的 RS-232/RS-485 网络固件升级、Bootloader传感器和主控之间的简单通信8. 与 SPI、I2C 的简单对比特性UARTSPII2C同步方式异步同步同步线数2 根 地4 根左右2 根双工全双工全双工半双工拓扑点对点一主多从多主多从寻址无片选地址速度中低高中典型用途调试、模块通信高速外设传感器、EEPROM总结UART 是一种简单、广泛使用的异步串行通信方式。它通过起始位、数据位、可选校验位和停止位组成帧双方用相同波特率通信。UART 本身适合点对点短距离通信配合 RS-232、RS-485 等物理层可以扩展距离和多点能力。
