UART/SPI/I²C三种串行总线详解与对比

发布时间:2026-08-20

阅读量:698

一、UART(通用异步收发器)

1. 基本定义

UART(Universal Asynchronous Receiver/Transmitter)是一种异步串行通信接口,核心作用是完成并行数据与串行数据之间的相互转换。它不依赖共享时钟,常用于MCU与调试终端、模组、低速外设之间的点对点通信。

2. 核心特点

  • 信号线少:TX(发送)、RX(接收)+ GND,硬件连接最简单;

  • 异步通信:收发双方约定波特率,通过起始位、停止位实现帧同步;

  • 全双工:发送与接收可同时进行;

  • 速率适中偏低:常见波特率为9600~115200 bps,高速场景一般<1 Mbps;

  • 传输距离远:配合RS-232/RS-422/RS-485物理层,可达十几米至千米级;

  • 帧结构固定:起始位(0) + 5~9位数据位(LSB先发)+ 可选奇偶校验位  + 停止位(1),具备基础抗干扰能力。

3. 工作原理简述

  1. 发送端按配置好的波特率,将数据拆成比特流,加上起始位和停止位依次发出;

  2. 接收端以相同波特率采样RX线,识别起始位后逐位接收数据位和校验位,最后检测停止位;

  3. 若开启校验,则进行奇偶校验判断,异常时产生帧错误或校验错误标志。

4. 典型应用场景

  • 嵌入式系统调试(串口打印log、Shell命令行);

  • MCU与GPS、蓝牙、LoRa、4G模组等通信;

  • 工业设备(PLC、仪表)的简单数据交互;

  • 老旧外设(扫码枪、串口打印机等)。

二、SPI(串行外设接口)

1. 基本定义

SPI(Serial Peripheral Interface)最初由Motorola提出,是一种高速同步全双工串行总线,采用主从架构,广泛用于MCU与Flash、ADC、LCD、传感器等高速外设之间的通信。

2. 核心特点

  • 信号线:SCLK(时钟)、MOSI(主发从收)、MISO(主收从发)、SS/CS(片选),最少4根;

  • 同步通信:主设备提供时钟,所有数据传输在时钟边沿同步进行;

  • 全双工:MOSI与MISO同时工作,吞吐率高;

  • 速度快:常见几Mbps~几十Mbps,远高于UART和I²C;

  • 多从设备支持:通过多个SS线分别选通不同从设备,但同一时刻只能有一个从设备被选中;

  • 时序灵活:通过CPOL(时钟极性)和CPHA(时钟相位)组合出4种工作模式,适配不同外设。

3. 工作原理简述

  1. 主机拉低某一路SS,选中对应从设备;

  2. 主机在SCLK上产生时钟,同时在MOSI线上发送数据,从设备在MISO线上返回数据;

  3. 传输完成后拉高SS,结束本次通信;

  4. 不同器件通过配置CPOL/CPHA匹配时序要求。

4. 典型应用场景

  • 外部存储器:SPI Flash、EEPROM、FRAM;

  • 显示驱动:LCD、OLED、TFT控制器

  • 数据采集:高速ADC、DAC;

  • 通信模组:Wi-Fi、蓝牙、ZigBee的数据通道;

  • 实时控制:电机驱动、传感器阵列等高吞吐场景。

三、I²C(集成电路总线)

1. 基本定义

I²C(Inter-Integrated Circuit)由Philips(现NXP)提出,是一种双线式同步半双工串行总线,专为芯片间低速控制与数据交换设计,支持多主多从和总线仲裁。

2. 核心特点

  • 信号线极少:SDA(数据线)、SCL(时钟线),硬件成本最低;

  • 同步半双工:同一时刻只能发送或接收,时钟由主机提供;

  • 多主多从:总线上可挂载多个主机和多个从机,通过仲裁机制避免冲突;

  • 地址寻址:每个从设备有唯一的7位或10位地址,主机通过地址选择通信对象;

  • 速率分级:标准模式100 kbps、快速模式400 kbps、高速模式3.4 Mbps(需硬件支持);

  • 开漏输出:SDA/SCL需外接上拉电阻,线路空闲时为高电平。

3. 工作原理简述

  1. 主机发起通信,先在总线上产生START条件(SCL为高时SDA下降沿);

  2. 主机发送7/10位从机地址 + 读写位,等待从机应答(ACK);

  3. 数据传输过程中,每发送一个字节都需对方返回ACK;

  4. 通信结束时,主机产生STOP条件(SCL为高时SDA上升沿);

  5. 多主机同时发起通信时,通过“线与”机制和地址比较进行仲裁,失败方自动退出发送。

4. 典型应用场景

  • 板载低速外设:EEPROM、RTC、温湿度传感器、PM2.5传感器等;

  • 消费电子:手机/平板中的加速度计、陀螺仪、指纹传感器;

  • 多设备共享总线:智能家居传感器节点、环境监测模块;

  • 配置与控制通道:电源管理IC、Codec、触控芯片等。

四、三者核心对比总结

对比维度

UART

SPI

I²C

信号线数量

TX、RX + GND(2线)

SCLK、MOSI、MISO、SS(≥4线)

SDA、SCL(2线 + 上拉)

通信方式

异步全双工

同步全双工

同步半双工

传输速率

低(≤1 Mbps,常用115200 bps)

高(几~几十 Mbps)

中低(100 k~3.4 Mbps)

设备寻址

无,点对点

片选SS线选择从机

7/10位地址寻址

拓扑结构

一对一

一主多从(多SS)

多主多从共享总线

硬件复杂度

最低

中等(线多、时序复杂)

低(但协议逻辑较复杂)

传输距离

长(配合RS-485可达上千米)

短(板级为主)

短(板级为主)

典型用途

调试、模组通信

高速存储、显示、ADC

板载控制、传感器

五、工程选型建议

  • 优先选UART:

调试打印、命令行交互;

与GPS、蓝牙、4G等模组的通信;

需要较长距离、布线简单、对速率要求不高的场景。

  • 优先选SPI:

需要高吞吐率(如Flash读写、LCD刷屏);

对实时性要求高、需要全双工通信;

IO资源相对充裕、外设数量不多。

  • 优先选I²C:

板载多个低速外设(传感器、RTC、电源管理IC);

PCB面积受限、希望减少走线;

对成本敏感、速率要求不高,但需要灵活的设备管理能力。