当前位置: 首页 > news >正文

江协科技STM32学习笔记补充之002 对比介绍 I²C 和 SPI 两种常见的串行总线接口

简要对比介绍 I²CSPI 两种常见的串行总线接口:


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²CSPI
线数2 根4 根以上
通信模式半双工全双工
速度较低 (≤3.4 Mbps)较高 (10–100 Mbps)
多设备支持好(地址寻址)一般(需多片选引脚)
硬件复杂度较复杂(需协议控制)简单(移位寄存器)
常见用途低速传感器高速外设、显示、存储

一句话总结

  • I²C —— 用两根线挂一堆“低速传感器”。

  • SPI —— 用高速全双工线挂“高速外设”。

I²C 与 SPI 对比分析表

特性I²CSPI
全称Inter-Integrated CircuitSerial 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

http://www.dtcms.com/a/363366.html

相关文章:

  • Linux 环境配置 Boost 库详细步骤
  • C++二维数组的前缀和
  • 高德开放平台智能眼镜解决方案,Rokid Glasses AR导航实测
  • 相较于传统AR矿物鉴定有哪些优势?
  • AR技术赋能风电运维:精准、高效、智能
  • Android 16k页面大小适配
  • 抄苹果作业,安卓「无视风险,继续安装」要被谷歌砍了?
  • ADB图片上传轮播
  • 2022版Unity创建时没有2D灯光(2D Light),没有Global LIght2D怎么办?
  • MYSQL 认识事务
  • Python实现多线程PDF抓取与下载脚本
  • 每秒扛住10万请求?RedissonRateLimiter 分布式限流器详解
  • 【机器学习深度学习】向量检索到重排序:RAG 系统中的优化实践
  • 好消息:Oracle 23ai 现已支持一键部署!
  • ThinkPHP的log
  • 使用 C 模仿 C++ 模板的拙劣方法
  • Flutter 3.35.2 主题颜色设置指南
  • 揭密设计模式:像搭乐高一样构建功能的装饰器模式
  • 《Vue进阶教程》(7)响应式系统介绍
  • 05 Centos 7尝试是否有网络
  • 基于STM32与华为云联动的智能电动车充电桩管理系统
  • Stop-Process : 由于以下错误而无法停止进程“redis-server (26392)”: 拒绝访问。
  • Python OpenCV图像处理与深度学习:Python OpenCV DNN模块深度学习与图像处理
  • PHP的error_log()函数
  • 智慧工地如何撕掉“高危低效”标签?三大社会效益重构建筑业价值坐标
  • 一款开源的CMS系统简介
  • 优秀开源内容转自公众号后端开发成长指南
  • QuickUp-Ubuntu
  • js设计模式-职责链模式
  • 【音视频】Opus 编码格式介绍