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 的核心知识点串起来了。建议你保存下来,后面每学一章都可以回来对照看看。

UART 知识体系总览 UART 串口通信 基础概念 串行 vs 并行 异步 vs 同步 全双工 vs 半双工 协议细节 起始位 / 数据位 / 校验位 / 停止位 波特率与位时序 奇偶校验 / 流控 硬件接口 RS-232 / RS-485 / TTL 电平转换(MAX232 等) DB9 / 杜邦线 / 端子 驱动开发 轮询 / 中断 / DMA FIFO 管理与流控实现 调试实战 逻辑分析仪抓波形 常见故障排查(波特率、电平、中断)

1.5 本章小结

这一章咱们把 UART 的底子打好了:

  • 串行通信用一根线传数据,并行通信用多根线。串行胜在简单、抗干扰、远距离。
  • UART 从 60 年代的电传打字机一路走来,靠"简单"二字活到了今天。
  • 在嵌入式系统里,UART 是调试之眼、通信之桥,地位无可替代。