1. UART 基础概念:串行通信与并行通信的区别、UART 协议的历史、UART 在嵌入式系统中的地位
1.1 串行 vs 并行:一根线 vs 一堆线
咱们先聊个最基础的问题:串行通信和并行通信到底差在哪?
说白了,串行通信就是一根线,数据一位一位地传。并行通信呢,一次传多位,比如 8 位数据同时走 8 根线。听起来并行更快对吧?
但实际项目里,我踩过不少并行通信的坑。记得有一次调试一块 LCD 屏,用了 8 位并口,结果布线时发现 PCB 上密密麻麻全是线,信号串扰搞得我头大。后来换成串口 SPI,问题一下子解决了。
我给大家整理了个对比表,一看就明白:
| 对比项 | 串行通信 | 并行通信 |
|---|---|---|
| 传输线数量 | 1 根(或差分对) | 8/16/32 根 |
| 传输速率 | 单线速率高,但总带宽低 | 单线速率低,但总带宽高 |
| 抗干扰能力 | 强(线少,串扰小) | 弱(线多,串扰严重) |
| 布线复杂度 | 低 | 高 |
| 典型应用 | UART、I2C、SPI、USB | 旧式打印机接口、SRAM 总线 |
| 远距离传输 | 适合(RS-232/485 可达几十米) | 不适合(几米内就出问题) |
核心结论:并行通信在短距离、高带宽场景下仍有优势,但串行通信凭借线少、抗干扰、远距离等特性,已经成为嵌入式系统的主流选择。
1.2 UART 协议的历史:从电传打字机到万物互联
UART 这玩意儿,其实比很多工程师的年龄都大。它最早可以追溯到 20 世纪 60 年代,那时候计算机还是庞然大物,通信靠的是电传打字机(Teletype)。
你想想看,那时候没有 USB,没有以太网,计算机和外设怎么通信?就是用 UART。RS-232 标准在 1969 年就发布了,定义了电压电平、引脚定义、时序要求。这个标准一直用到现在,虽然已经改了很多版。
我个人觉得,UART 能活这么久,核心原因就一个:简单。不需要时钟线,不需要复杂的协议栈,两根线(TX、RX)就能干活。这在资源受限的嵌入式系统里简直是天选之子。
到了 80 年代,IBM PC 把 UART 做成了标准外设,用的是 8250/16450 芯片。后来 16550 加入了 FIFO 缓冲,解决了丢数据的问题。嗯,这个 16550 到现在还在很多 MCU 里用着,经典永流传。
进入 21 世纪,虽然 USB、以太网满天飞,但 UART 在调试、低功耗、简单通信场景下依然坚挺。我做过一个物联网项目,传感器节点用电池供电,UART 的功耗比 SPI 低一个数量级,你说香不香?
小知识:UART 的全称是 Universal Asynchronous Receiver/Transmitter(通用异步收发器)。注意"异步"两个字——没有时钟线,靠波特率同步,这是它和 SPI、I2C 最大的区别。
1.3 UART 在嵌入式系统中的地位:调试之眼、通信之桥
说 UART 是嵌入式工程师的"瑞士军刀",一点不夸张。我做了十几年嵌入式开发,可以负责任地告诉你:没有 UART,调试就像闭着眼睛开车。
咱们来看看 UART 在嵌入式系统里的几个核心角色:
- 调试输出:printf 打印日志,看变量值,看程序跑到了哪。这是最常用的场景,没有之一。
- 命令行交互:通过串口终端输入命令,控制设备、修改参数、查看状态。
- 固件升级:Bootloader 通过 UART 接收新固件,烧写到 Flash 里。
- 传感器/外设通信:GPS 模块、蓝牙模块、4G 模块,很多外设默认就是 UART 接口。
- 多机通信:RS-485 总线可以挂几十个设备,工业现场控制全靠它。
我曾经在一个项目中,设备部署在野外,没有显示屏,没有网络。调试全靠 UART 接一个蓝牙串口模块,用手机 App 看日志。你说 UART 重不重要?
避坑指南:UART 虽然简单,但坑也不少。比如波特率不匹配、电平不匹配(3.3V vs 5V)、地线没接好、中断处理不及时导致丢数据……这些我在后面章节会一个一个讲。
1.4 知识体系总览:一张图看懂 UART
下面这张 SVG 图,把 UART 的核心知识点串起来了。建议你保存下来,后面每学一章都可以回来对照看看。
1.5 本章小结
这一章咱们把 UART 的底子打好了:
- 串行通信用一根线传数据,并行通信用多根线。串行胜在简单、抗干扰、远距离。
- UART 从 60 年代的电传打字机一路走来,靠"简单"二字活到了今天。
- 在嵌入式系统里,UART 是调试之眼、通信之桥,地位无可替代。