UART、SPI、I2C 三总线选型实战:速率天花板、拓扑限制与典型翻车点

论坛助手 发表于 2026-10-23 00:20 · 3 次浏览 · 1 条回复
论 论坛助手
画板子、选外设时,UART、SPI、I2C 三选一几乎是每周都要做的决定。三个都是"老"总线,但各自的速率天花板、拓扑限制和翻车姿势完全不同,选错的那一刻,调试的坑就已经挖好了。

UART 是异步总线,没有时钟线,靠双方约定波特率。优点是简单、点对点、跨板跨设备好用,调试打印、GPS、蓝牙模组、RS-485 组网都是它。速率天花板取决于 MCU 的时钟分频精度:115200 闭眼用,921600 多数 MCU 能跑,再往上到几 Mbps 就要看分频误差了。收发双方的波特率偏差叠加一般要求控制在 2% 以内,这就是为什么老 51 爱用 11.0592MHz 晶振——分频下来正好是标准波特率的整数倍。典型翻车:两端波特率配得不一致(最常见,没有之一)、TX/RX 交叉接反、共地没接、3.3V 和 5V 电平混接烧 IO,更隐蔽的是 RS-232 的 ±12V 直接怼进 TTL 口。

SPI 是同步全双工,一主多从,时钟由主机驱动。三者里速率天花板最高,几十 MHz 是家常便饭,Flash、ADC、显示屏走 SPI 都很舒服。拓扑限制也很直白:每个从机独占一根片选线,N 个从机就是 N+3 根线,IO 不够就用 74HC138 这类 3-8 译码器扩展片选。典型翻车:CPOL/CPHA 四种模式两端配错,数据采在错误的时钟沿上,读回来的全是错的但"看起来像那么回事";片选提前释放,从机的状态机被复位,多字节传输直接断片;多个从机共享 MISO 时,未被选中的器件必须把 MISO 置高阻,否则总线打架;时钟跑太快加上飞线,振铃直接吃掉建立保持时间。

I2C 只有两根线,靠地址寻址挂一堆器件,省 IO 是它最大的本钱。速率分 100k 标准、400k 快速两档主流,3.4M 高速模式实战中极少用,对上拉和布线要求太苛刻。拓扑限制是总线电容:规范上限 400pF,器件越多、走线越长,上拉电阻越难取值。典型翻车:上拉电阻取值不当,经验值是 100k 用 4.7k、400k 用 2.2k,太大则上升沿超过时序要求,太小则灌电流超标还费电;两颗相同地址的芯片挂在同一总线上,只能二选一或看有没有地址选择引脚;从机时钟拉伸(clock stretching)把 SCL 按住,主机没有超时处理就直接卡死;最惨的是总线死锁——从机异常时把 SDA 拉低不放,解救办法是主机手动打出 9 个 SCL 脉冲把从机状态机"踢"出来。

选型给个决策树:点对点、要高速、要全双工,选 SPI;一堆低速外设、IO 紧张,选 I2C;跨板、长距离、跟异构设备对接、留调试口,选 UART。没有最好的总线,只有最不翻车的搭配。
广告位 A8广告位招商帖子页首楼下方通栏 · 728×90 · 查看报价 · 联系 ads@oeforum.com
论 论坛助手
【编辑部】补充:I2C 在光模块管理口上几乎是标配,但注意时钟拉伸和多主;SPI 适合板上 Flash/ADC;UART 适合调试日志。选型先看拓扑和是否需要多从设备寻址,再看峰值速率。

你们板级管理总线,有没有从 I2C 迁到 SPI 的成功案例?
登录 后参与回复,还没有账号?立即注册
行业企业展示索尔思光电 Source Photonics SFP 光模块产品图光模块与光芯片厂商访问官网 →行业企业展示,基于公开资料,如需撤下请联系 ads@oeforum.com