UART、SPI 和 I²C 是嵌入式系统最常见的串行接口,但它们解决的问题并不完全相同。
UART 是异步通信,常用发送和接收两根信号线,通过约定波特率完成数据传输。它结构简单、调试方便,适合日志、模块通信和点对点连接。需要注意双方波特率误差、电平标准以及收发缓存。UART 本身并不等同于 RS-232 或 RS-485,后两者主要定义物理电气层。
SPI 使用时钟、数据输入、数据输出和片选信号,通常支持全双工和较高速度,适合 Flash、ADC、显示屏等板内器件。优点是协议简单、吞吐量高,缺点是设备增多后片选线较多,布线和时序要求也更严格。
I²C 使用时钟和数据两根线,通过地址连接多个设备,适合传感器、EEPROM 和低速配置器件。设计时要关注上拉电阻、总线电容、地址冲突、时钟拉伸以及总线被设备拉死后的恢复。
选择接口时,应根据传输距离、速度、设备数量、引脚资源、抗干扰和软件复杂度综合判断,并用示波器或逻辑分析仪验证真实时序。