I2C与SPI总线选型决策指南¶
难度:🟢 入门 | 领域:总线选型 | 关键词:I2C, SPI, 片选, 地址 | 阅读时间:约 15 分钟
日常类比¶
给整栋楼装门铃:每间房拉专线到前台像串行外设接口(Serial Peripheral Interface, SPI)的片选;共用一根铃线、靠门牌号区分像 I2C 的地址。线少还是速快,是 IoT 外设选型的主矛盾[1][2]。
摘要¶
从引脚、吞吐、距离、功耗与混合拓扑给出选型框架,并简述 I3C 作为演进选项。文中 MHz/效率数字为示意,以器件数据手册为准[1][4]。
1. 原理对照¶
| 维度 | I2C | SPI |
|---|---|---|
| 信号线 | SCL+SDA(2) | SCLK+MOSI+MISO+CS×N(≥4) |
| 寻址 | 7/10 位地址 | 片选 GPIO |
| 双工 | 半双工 | 全双工 |
| 应答 | ACK/NACK | 通常无硬件 ACK |
| 多主 | 规范支持 | 一般单主 |
| 速率量级 | 0.1–数 MHz | 常可达数十 MHz 量级 |
| 从机数 N | I2C 脚数 | SPI 脚数(示意) |
|---|---|---|
| 1 | 2 | 4 |
| 4 | 2 | 7 |
| 8 | 2 | 11 |
SPI 可用译码器扩展 CS,但增加器件与时序复杂度。
2. 吞吐、功耗与距离¶
短帧时 I2C 地址+ACK 开销占比高;传感器每秒数 Hz~百 Hz 读数时,Fast 模式通常够用。I2C 上拉有静态电流;SPI 空闲可仅拉高 CS,但高速动态功耗未必更低——需按占空比测[3][5]。
| 距离量级 | I2C | SPI |
|---|---|---|
| 同板数厘米 | 通常可行 | 通常可行 |
| 板内偏长 | 易需降速/加强上拉 | 相对更稳 |
| 板间长线 | 一般不推荐 | 仍须注意完整性;更远改差分/现场总线 |
3. 选型口诀与混合¶
- 高速大流量(屏、Flash、高速 ADC)→ SPI
- 低速多传感、引脚紧 → I2C
- 多数节点:I2C 传感器 + SPI 存储/显示
| 场景 | 倾向 | 理由 |
|---|---|---|
| 气象站多传感器+小 OLED | I2C 为主 | 省脚、速率够 |
| 高采样振动+本地大容量存储 | SPI 为主 | 吞吐与接口匹配 |
| 双接口 IMU/气压计 | 跟现有总线走 | 少引入新 CS |
I3C 试图兼得两线与更高速率、带内中断;MCU/传感器生态仍在普及,多数入门 IoT 仍以 I2C/SPI 为主[6]。
4. 局限、挑战与可改进方向¶
1. 用峰值速率代替系统瓶颈¶
局限:传感器 ODR 很低却坚持上 SPI,浪费引脚。 改进:先看传感器输出数据率与帧长,再选总线[4]。
2. I2C 上拉与睡眠漏电¶
局限:电池设计忽略上拉与未配置 GPIO。 改进:睡眠切断上拉/外设电源;对照漏电流专项实践[5]。
3. 混挂速率与电压域¶
局限:慢设备拖死整条 I2C;3.3 V/1.8 V 混接无电平转换。 改进:按速率分总线;显式电平转换与上电顺序[1]。
4. 过早押注 I3C¶
局限:控制器与调试工具不成熟导致进度风险。 改进:新设计评估 I3C;量产路径保留 I2C 兼容或双足迹[6]。
总结¶
选型看速率、数引脚、算功耗与布线;混合总线是常态。拿不准时 I2C 起步,瓶颈再引入 SPI。
参考文献¶
[1] NXP, UM10204 I2C-bus specification. [2] Motorola / NXP 等, SPI Block Guide 及后续实现说明. [3] Texas Instruments, I2C 上拉电阻计算 SLVA689. [4] F. Leens, An introduction to I2C and SPI protocols, IEEE SPM, 2009. [5] 低功耗 IoT 总线与 GPIO 睡眠配置应用笔记(Nordic/ST/TI). [6] MIPI Alliance, I3C Specification. [7] 各传感器双接口数据手册(BME280、LSM6 等). [8] PCB 高速 SPI 布线与信号完整性基础文献. [9] RS-485/CAN 作为长距离替代的选型综述. [10] USB–SPI/I2C 桥在调试中的使用说明. [11] STM32/ESP32 外设引脚复用与总线分配应用笔记. [12] 显示屏与 NOR Flash SPI 时序应用笔记.