为什么这三条总线仍然重要 #

每个微控制器板最终都要和其他设备通信——传感器、显示器、存储芯片、无线模块或主机。早在 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 命令和通用调试的主力——只要两个节点之间需要简单的文本或字节流,用它就够了。

如何选择:实用对比 #

选哪种通常取决于设备数量、数据速率,以及能腾出多少引脚。

维度I2CSPIUART
信号线2(SDA、SCL)4 + 每设备 1 CS2(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 则为控制台和模块提供简单的点对点链路。大多数电路板三种都会用到,所以真正要做的是根据各外设的需求选择权衡取舍合适的总线,再确定具体用哪款桥接芯片、收发器或微控制器来实现。

最终设计决策请以原厂数据手册及获批准的工程资料为准。