为什么这三条总线仍然重要 #
每个微控制器板最终都要和其他设备通信——传感器、显示器、存储芯片、无线模块或主机。早在 USB、以太网或 PCIe 出现之前,这类通信大多通过三种低速串行接口完成:I2C、SPI 和 UART。
它们之间并不是“谁最好”的竞争关系。每种接口都在引脚数、速度、布线复杂度以及可共享同一组线的设备数量之间做出不同的取舍。理解这些取舍,工程师才能选对总线,而不是照抄上次看到的原理图。
本指南从真正影响设计决策的维度对这三者进行比较,然后看看这一选择如何体现在采购人员每天指定的实际元器件中。
I2C:两根线,多个设备 #
I2C(Inter-Integrated Circuit,常写作 I²C)是一种同步、多主、多从总线,只用两条开漏线:SDA(串行数据)和 SCL(串行时钟)。两条线都由上拉电阻保持高电平,由正在驱动的设备拉低。
每次事务都以一个 7 位或 10 位地址开始,用于选中一个从设备,因此许多设备可以共享同样的两根线。时钟由主设备产生,从设备不需要自己的时序参考。
典型速度等级:
- 标准模式 — 100 kbit/s
- 快速模式 — 400 kbit/s
- 快速模式增强版 — 1 Mbit/s
- 高速模式 — 3.4 Mbit/s
I2C 的优势所在:
- 引脚紧张的板子——两根线即可服务整个外设网络。
- 慢速控制路径:温度传感器、PMIC、RTC、小型 EEPROM、触摸 控制器。
- 希望通过扫描地址来探测“总线上有什么”的系统。
代价是速度以及一些协议开销。开漏线和上拉 也会限制可靠翻转的速度,而总线电容会限制 线缆长度和设备数量。
SPI:快速、简单、点对点 #
SPI(Serial Peripheral Interface)是一种同步、全双工总线,围绕 四个信号构建:
- SCLK — 由主设备驱动的时钟
- MOSI — 主设备输出,从设备输入
- MISO — 主设备输入,从设备输出
- CS/SS — 片选,每个从设备一条专用线
SPI 中没有寻址。相反,一条独立的片选线告诉每个 从设备何时监听。这使硬件简单,但每个设备都要占用一个引脚。
SPI 不像 I2C 那样有官方速度上限;在实践中,在支持的 MCU 上它可从 几 Mbit/s 运行到几十 Mbit/s。由于它是全 双工且无寻址的,它是以下应用的默认选择:
- Flash 和串行存储器(NOR/NAND、EEPROM)
- 显示和触摸接口
- 传输真实数据而不仅仅是寄存器的 ADC、DAC 和射频前端
- 任何吞吐量比节省引脚更重要的外设
主要缺点是布线:每增加一个设备就需要多一根 CS 线,而且共享时钟走线较长时,在高速下容易引入噪声。
UART:异步、点对点 #
UART(通用异步收发器)是三者中最早出现的,概念上也最简单。两个设备通过 TX 和 RX 线交换字节,没有共享时钟。双方约定一个波特率,按固定间隔对线路采样。
由于没有时钟线,UART 严格来说是点对点——一个 TX 对应一个 RX。常见波特率从 9600 到几 Mbit/s,具体取决于芯片和信号电平。
几点实用说明:
- 原始逻辑电平 UART(3.3 V 或 5 V)通常会被转换为标准接口。诸如 FT232RL 之类的 USB 转 UART 桥接器可让 PC 与板载调试控制台通信。RS-232 为传统设备增加 ±12 V 信号,而 RS-485 将这一对信号转换为差分总线,可实现长距离传输并支持多点网络。
- UART 没有寻址功能,除可选奇偶校验位外也没有内置错误检查,因此协议成帧是应用层的责任。
UART 仍是启动日志、固件下载、GPS 模块、蓝牙/Wi-Fi AT 命令和通用调试的主力——只要两个节点之间需要简单的文本或字节流,用它就够了。
如何选择:实用对比 #
选哪种通常取决于设备数量、数据速率,以及能腾出多少引脚。
| 维度 | I2C | SPI | UART |
|---|---|---|---|
| 信号线 | 2(SDA、SCL) | 4 + 每设备 1 CS | 2(TX、RX) |
| 时钟 | 共享,主机驱动 | 共享,主机驱动 | 无(波特率约定) |
| 速度 | 最高约 3.4 Mbit/s | 典型为数十 Mbit/s | 最高几 Mbit/s |
| 双工 | 半双工 | 全双工 | 全双工(独立线路) |
| 拓扑 | 多从机共享总线 | 星形,每设备独立 CS | 点对点 |
| 寻址 | 7/10 位地址 | 无(CS 线) | 无 |
| 最适合 | 多个低速外设 | 高速数据、存储器、显示器 | 控制台、调试、传统链路 |
一条实用的经验法则:
- 传感器多、引脚紧张 → I2C。
- 单个高速设备、吞吐量关键 → SPI。
- 与主机、模块或控制台通信 → UART。
实际板卡几乎总是三种总线同时使用。例如 STM32F103C8T6 在同一封装上集成了 I2C、SPI 和多个 UART,所以问题不是哪种总线胜出,而是每个外设如何布线。
常见桥接器和 MCU 器件的采购说明 #
选哪种总线,会直接反映在物料清单上。不同设计中有几种常见做法:
- USB-UART 桥接芯片(如 FT232RL)把 PC 的 USB 口变成逻辑电平串口,用于编程和调试。这类器件属于通用料,生命周期长,但需求高峰期偶尔会遇到配额紧张。
- 集成三种接口的 MCU——STM32F103 系列是常见例子——一颗芯片就能接传感器(I2C)、闪存(SPI)和主机链路(UART),无需外加胶合逻辑。
- SPI 串行闪存(Winbond W25Q 及同类产品)仍是默认的固件存储方案,所以现代板卡上 SPI 几乎不是可选项。
- 设计需要引出机箱时,UART 转 RS-485 收发器能把同一协议延伸到数米电缆,适用于工业和汽车环境。
无论选哪种,确定备货前都要核实准确的可订购料号、封装和日期码,因为看似相同的器件之间,后缀和温度等级的差异很容易被忽略。
结论 #
I2C、SPI 和 UART 并没有过时,它们仍是把 MCU 与设计其余部分连接起来的日常接口。I2C 能用少量引脚挂接多个低速器件,SPI 为存储器和数据通路提供速度,UART 则为控制台和模块提供简单的点对点链路。大多数电路板三种都会用到,所以真正要做的是根据各外设的需求选择权衡取舍合适的总线,再确定具体用哪款桥接芯片、收发器或微控制器来实现。
