欢迎光临
我们一直在努力

一文搞定 USART 串口协议(含电源接线、RS485、波形图解)

一、到底什么是 USART / UART?

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)
即“通用同步/异步收发器”。日常使用最多的是它的异步模式,也就是大家常说的 UART(通用异步收发器)。

简单比喻:
串口就像两个人用对讲机聊天——我说你听、你说我听,双方必须用同样的语速(波特率),但不需要一根单独的“节拍线”(时钟线)。

它最大的优点:

  • 线少(通常只需 TX、RX、GND 三根线)
  • 全双工(两边可以同时发送和接收)
  • 几乎所有单片机、模块、PC 都支持

二、硬件接口与电平标准

1. TTL 电平(单片机、模块常用)

  • 逻辑 1:高电平(3.3V 或 5V)
  • 逻辑 0:低电平(0V)
  • 空闲状态为高电平

2. RS232 电平(传统 PC 串口)

  • 负逻辑:逻辑 1 = -15V ~ -3V,逻辑 0 = +3V ~ +15V
  • 不能和 TTL 直连,需通过 MAX232 等芯片进行电平转换

3. 差分信号(RS485 / RS422)

用于远距离、强抗干扰的工业场景。
不同于 TTL 和 RS232 只用一根信号线对地电压,RS485 使用两根线(A / B)传输差模信号。

  • 逻辑怎么判断?
    接收端只看 A、B 之间的电压差:

    • A – B > +200mV → 逻辑 1
    • B – A > +200mV → 逻辑 0
      (简单记:A 比 B 高足够多就是 1,B 比 A 高足够多就是 0)
  • 为什么抗干扰?
    干扰通常同时叠加在 A、B 两根线上(共模干扰),接收端做减法后干扰会被抵消。

  • 电平范围(大概记忆)
    发送器输出差模电压典型值 ≥ ±1.5V,共模电压范围 -7V ~ +12V。
    不需要记死数字,只要知道它是低压差分,与 TTL/RS232 完全不同,不能直连。

  • 接线特征
    一般标着 A+ / B- 或 D+ / D-,有的模块叫 485A、485B。
    常用双绞线,距离可达 1200 米。

📌 日常调试单片机串口时主要接触 TTL 和 RS232,RS485 多用于工业传感器、PLC 和长距离通信。理解它的差分原理,就不会再把 A/B 当成 TX/RX 去接了。

在这里插入图片描述

💡看图要点:

  • DI/RO:485芯片和MCU之间的TTL信号;DE/RE引脚必须统一控制收发。
  • A、B两根双绞线,总线首尾两端各接120Ω终端电阻,抑制信号反射。
  • A‑B电压差决定逻辑电平,不是单根线对地。
  • 发完数据必须立刻拉低DE/RE,否则总线会被主机持续占用,从机无法发送。

  • 三、电路连接图

    根据设备供电方式不同,接线分为两种情况。
    核心口诀不变:你收我发,你发我收,必须共地。(RS485 通常不需要共地,但这里主要讲 TTL/RS232 场景)

    场景一:双方独立供电(最常用)

    设备 A 和设备 B 都有自己的电源,此时严禁连接 VCC 引脚,只需接三根线。

    在这里插入图片描述

    适用场景:两个单片机互相通信、单片机与自带电源的模块通信。


    场景二:由通信端供电(如 USB转TTL 给目标板供电)

    当设备 A 没有外部电源,需要从设备 B 取电时,连接 VCC。

    在这里插入图片描述

    必须满足两个条件:

    • 设备 A 的供电电压与设备 B 的 VCC 输出电压严格一致(3.3V 或 5V)
    • 设备 A 的整板功耗在设备 B 的供电能力范围内(USB转TTL模块通常可提供 ≤500mA)

    🔥 特别注意:如果设备 A 已经通过其他方式供电(比如电池、外接电源),绝不能再连接 VCC,否则两个电源会打架,轻则复位,重则冒烟。


    四、UART 数据帧格式(异步模式)

    一个完整的字符帧由四部分组成:

    空闲(高) | 起始位 | 数据位(LSB先发) | 校验位(可选) | 停止位 | 空闲(高)…

    • 起始位:1 位,强制拉低(逻辑 0),告诉对方“我要开始发数据了”。
    • 数据位:5 ~ 9 位可配,常用 8 位,先发送最低位(LSB)。
    • 校验位(可选):奇校验、偶校验,用来简单检错。
    • 停止位:1 / 1.5 / 2 位,固定为高电平(逻辑 1),表示一个帧结束。
    • 空闲状态:总线没有数据时保持高电平。

    常用配置简写:115200, 8N1
    → 波特率 115200,8 个数据位,无校验(None),1 个停止位。


    五、波特率:双方约定的“语速”

    波特率(Baud rate):每秒钟传输的码元个数,单位 bps。
    常见值:9600、19200、38400、115200 等。

    收发双方的波特率必须一致,否则接收方会解出乱码。
    一般要求误差 < 2%,所以晶振要准,内部 RC 振荡器在高波特率时可能翻车。


    六、波形实例:发送字符 'A' (0x41)

    配置:8 个数据位,无校验,1 个停止位(8N1),LSB 先发。

    'A' 的 ASCII 码:0x41 → 二进制 01000001

    • D0(LSB,最低位)= 1
    • D1 = 0
    • D2 = 0
    • D3 = 0
    • D4 = 0
    • D5 = 0
    • D6 = 1
    • D7(MSB,最高位)= 0

    ⚠️注意:UART 先发送最低位(LSB),波形上最先输出的数据位是D0,对应字节二进制最右侧bit,不是最左侧。

    TTL 电平下的波形示意:

    在这里插入图片描述

    位标注解读:

    • ST = 起始位(Start),固定逻辑0,拉低通知接收方准备接收
    • D0 = 1(LSB,最先发送)
    • D1 = 0
    • D2 = 0
    • D3 = 0
    • D4 = 0
    • D5 = 0
    • D6 = 1
    • D7 = 0
    • SP = 停止位(Stop),固定逻辑1,代表一帧结束
    • 空闲 = 总线无数据,持续高电平

    📌 实际用示波器或逻辑分析仪抓到的就是这个样子,学会看波形,调试串口乱码问题效率大幅提升。

    ⚠️初学者高频踩坑:
    字节书写01000001,D6=1;因为LSB先发,这个1在线上是第7个数据位(D6),不是第6位。
    不要把波形从左向右8个数据直接当成D7~D0,会造成比特顺序颠倒,解读出错误字节。


    七、同步模式(一言概之)

    USART 的同步模式需要额外一根 SCLK 时钟线,由主设备输出时钟信号,数据在时钟沿被采样。
    比异步模式多一根线,速度可以做得更高,但日常嵌入式应用不多,了解即可。


    八、常见坑与实战建议

  • TTL 与 RS232 乱接
    单片机 TX/RX 是 TTL 电平,电脑原生串口是 RS232,中间必须有 MAX3232 之类的电平转换芯片。

  • 忘记共地
    信号靠电压差,没有共同的地,收方根本不知道你的“高”是几伏。
    (RS485 差分信号例外,它不依赖共地,但通常还是建议接一根地线提高可靠性)

  • 乱接 VCC
    两边都供电时接上 VCC,等于把两个电源输出短接,大概率烧稳压器或 USB 口。只有明确需要从一端供电时才接 VCC,并确认电压。

  • 波特率不匹配
    串口助手乱码?先检查双方波特率设置。

  • 长线通信
    超过一两米建议用 RS485 差分传输,否则易受干扰。

  • RS485 方向控制
    很多 485 芯片需要额外引脚控制收发状态(如 RE/DE),发送前拉高,发完拉低,否则总线会堵死。这是新手最容易卡住的地方。

  • 调试神器
    花十几块买个 USB 转 TTL 模块 + 逻辑分析仪,观察波形,瞬间理解协议。


  • 九、小结

    • USART/UART 是异步串行通信的主力军。
    • 硬件上核心是 TX、RX、GND 三根线,交叉连接;供电场景需按需接 VCC。
    • 数据帧由起始位(0) + 数据位(LSB first) + 可选校验 + 停止位(1) 组成。
    • 波特率是双方的“语速”,必须一致。
    • 会看波形、接对电源、搞清 TTL/RS232/RS485 的区别,是嵌入式工程师进阶的必经之路。

    这篇文章的电路图和波形图都是可以直接拿来画在笔记上的,建议收藏。
    如果你想看某款具体单片机(如 STM32、ESP32)的串口配置代码,评论区告诉我!


    如果觉得有帮助,欢迎点赞收藏,让更多伙伴看到~

    赞(0)
    未经允许不得转载:171主机测评 » 一文搞定 USART 串口协议(含电源接线、RS485、波形图解)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址