SPI接口与I2C接口有什么区别?

SPI 接口与 I2C 接口的区别对比

1. 基本架构与主从模式
特性 SPI I2C (I²C)
架构 单主多从(典型)或多主多从(需额外控制) 多主多从,支持总线仲裁(通过竞争检测)
主设备控制 主设备通过独立片选(SS)选中从设备 主设备通过发送从设备地址选中目标设备
从设备标识 依赖硬件片选引脚(每个从设备需独立 SS) 依赖 7 位 / 10 位地址(软件寻址,共享总线)
2. 信号与引脚数量
特性 SPI I2C
核心信号线 4 根:SCK(时钟)、MOSI(主发从收)、MISO(主收从发)、SS(片选) 2 根:SCL(时钟)、SDA(双向数据)
片选机制 每个从设备需独立 SS 引脚(低电平有效) 无独立片选,通过地址帧选择从设备
引脚占用 多从设备时,主设备需 N+3 引脚(N 为从设备数) 固定 2 根引脚,支持最多 127(7 位地址)或 1023(10 位地址)个从设备
3. 通信方式与时序
特性 SPI I2C
传输方向 全双工(同时收发)或半双工 半双工(同一时刻只能发送或接收)
时钟控制 主设备生成时钟,支持 4 种模式(CPOL/CPHA) 主设备生成时钟,标准速率:100kHz、400kHz、3.4MHz(高速模式)
数据单位 以字节(8 位)为单位,连续传输无间隔 以字节为单位,每字节后需应答(ACK/NACK)
起始 / 结束信号 无明确起始 / 结束信号,片选有效时开始传输 有明确起始(SCL 高电平时 SDA 下降沿)和结束(SCL 高电平时 SDA 上升沿)信号
4. 协议复杂度与可靠性
特性 SPI I2C
协议开销 无地址帧、应答帧,协议简单 包含地址帧、应答位、停止位,协议较复杂
错误检测 无内置校验,依赖上层协议 支持应答机制(ACK),可检测从设备是否就绪
总线仲裁 多主模式需外部逻辑避免冲突 内置总线仲裁机制(通过 SDA 竞争检测)
5. 传输速率与应用场景
特性 SPI I2C
最高速率 可达数十 Mbps(如 STM32 的 SPI 最高 54Mbps) 标准模式 100kHz,高速模式 3.4Mbps,超速模式 5Mbps(非标准)
典型应用 高速数据传输(如 Flash、传感器、显示驱动) 低速到中速场景(如 RTC、EEPROM、低速传感器)
设备数量 受限于主设备片选引脚数量(通常≤8 个) 受限于地址空间(7 位地址支持 127 个设备)
6. 优缺点对比
维度 SPI 优势 I2C 优势
速率 高速率,适合大数据量实时传输 引脚少,节省硬件资源(仅 2 根线)
多设备支持 需独立片选,多从设备时引脚占用多 地址寻址,适合大量低速外设共总线
协议简单性 无复杂握手,硬件实现简单 支持热插拔、总线仲裁,适合复杂系统
可靠性 无应答机制,需上层协议保证可靠性 应答机制和错误检测,传输更可靠
7. 典型应用对比
  • SPI 适用场景

    • 高速外设:如串行 Flash(W25Q 系列)、LCD/OLED 驱动(ILI9341、SH1106)、MEMS 传感器(高速数据采集)。
    • 单主多从且设备数量少(如 1~3 个从设备),对速率要求高的场景。
  • I2C 适用场景

    • 低速外设:如 EEPROM(24C 系列)、RTC(DS1302)、温湿度传感器(SHT30)、多通道 ADC/DAC(如 ADS1115)。
    • 多设备共总线场景(如主板上多个传感器、EEPROM 共享 SCL/SDA),节省引脚资源。
总结:如何选择?
  • 选 SPI:若需要 高速率、简单协议、单主少从设备,且不介意片选引脚占用(如控制 1~2 个高速外设)。
  • 选 I2C:若设备 低速、数量多、需共享总线,且需要应答机制保证可靠性(如多个传感器或配置芯片)。

两者的核心区别在于 引脚数量、多设备支持方式、协议复杂度和速率,实际应用中需根据系统需求(如外设数量、数据吞吐量、硬件资源限制)选择合适的接口。

你可能感兴趣的:(单片机,嵌入式硬件,spi)