一、到底什么是 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 去接了。

💡看图要点:
三、电路连接图
根据设备供电方式不同,接线分为两种情况。
核心口诀不变:你收我发,你发我收,必须共地。(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)的串口配置代码,评论区告诉我!
如果觉得有帮助,欢迎点赞收藏,让更多伙伴看到~



