江协科技STM32学习笔记补充之002 对比介绍 I²C 和 SPI 两种常见的串行总线接口
简要对比介绍 I²C 和 SPI 两种常见的串行总线接口:
1. I²C(Inter-Integrated Circuit)
结构:双线制
SCL(时钟线)
SDA(数据线)
拓扑:多主多从,可在一条总线上挂很多设备(每个设备有唯一 7/10 位地址)。
传输方式:半双工,基于时钟同步,数据一位一位在 SDA 上传输。
速度:
标准模式:100 kbps
快速模式:400 kbps
高速模式:3.4 Mbps
(部分 MCU/器件支持 5 Mbps+)
优点:
接线少(两根线搞定多个设备)
节省 IO 口
缺点:
速度相对较慢
需要上拉电阻,通信距离有限
协议相对复杂(起始/停止、应答 ACK 等)
常见应用:EEPROM、RTC、温湿度传感器、触摸屏控制器等。
2. SPI(Serial Peripheral Interface)
结构:四线制(最基本)
SCLK(时钟)
MOSI(主机输出/从机输入)
MISO(主机输入/从机输出)
CS/SS(片选信号,可有多个)
拓扑:1 主多从,但每个从设备要单独的 CS 片选引脚。
传输方式:全双工,主机和从机可同时发送和接收数据。
速度:几 Mbps 到几十 Mbps(常见 10–50 Mbps,部分可达百兆)。
优点:
速度快,效率高
硬件简单,协议灵活
缺点:
引脚多(每加一个从机就需要一个片选线)
没有标准化的寻址机制
不适合挂太多设备
常见应用:Flash 存储、显示屏驱动、ADC/DAC、无线模块(nRF24L01、ESP8266)等。
3. 简单对比表
特性 | I²C | SPI |
---|---|---|
线数 | 2 根 | 4 根以上 |
通信模式 | 半双工 | 全双工 |
速度 | 较低 (≤3.4 Mbps) | 较高 (10–100 Mbps) |
多设备支持 | 好(地址寻址) | 一般(需多片选引脚) |
硬件复杂度 | 较复杂(需协议控制) | 简单(移位寄存器) |
常见用途 | 低速传感器 | 高速外设、显示、存储 |
✅ 一句话总结:
I²C —— 用两根线挂一堆“低速传感器”。
SPI —— 用高速全双工线挂“高速外设”。
I²C 与 SPI 对比分析表
特性 | I²C | SPI |
---|---|---|
全称 | Inter-Integrated Circuit | Serial Peripheral Interface |
发明者/设计公司 | 飞利浦 (Philips, 现 NXP),1982 年提出,用于芯片间低速通信 | 摩托罗拉 (Motorola),1980 年代设计,用于 MCU 与外设高速通信 |
线数 | 2 根(SCL 时钟 + SDA 数据) | 4 根起(SCLK 时钟 + MOSI + MISO + CS/SS),多从机需更多 CS 引脚 |
拓扑结构 | 多主多从,共享总线,依靠设备地址区分 | 1 主多从,靠独立的片选线选择从机 |
通信模式 | 半双工,同一时刻只能单向传输 | 全双工,主从可同时收发 |
速度 | 100 kbps(标准)、400 kbps(Fast)、3.4 Mbps(High-Speed) | 常见 10–50 Mbps,部分器件可达 100+ Mbps |
数据完整性 | 有应答位(ACK/NACK),协议相对复杂 | 没有标准应答机制,协议简单但需应用层保证可靠性 |
硬件复杂度 | 控制逻辑复杂,需要起始/停止条件、应答机制 | 硬件移位寄存器实现即可,逻辑简单 |
资源消耗 | 占用少 IO 口(只需 2 根线,可挂很多设备) | 占用较多 IO(从机数量多时,需要多个 CS 引脚) |
常见用途 | 低速传感器(EEPROM、RTC、温湿度、触摸屏控制器) | 高速外设(Flash、LCD 显示屏、ADC/DAC、无线模块) |
优点 | 接线简单、节省引脚、易于扩展 | 速度快、全双工、时序简单 |
缺点 | 速度较低、距离有限、需要上拉电阻 | 占用引脚多、扩展性差、缺乏统一寻址机制 |
✅ 总结
I²C:由 Philips (NXP) 发明,主打 简洁、节省引脚、适合低速多设备。
SPI:由 Motorola 设计,主打 高速、全双工、简单可靠,适合 高速外设通信。
要不要我再帮你扩展一列,加入 应用案例(典型芯片型号),比如 I²C 的 DS1307 RTC、SPI 的 W25Q64 Flash?