0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍一下I2C和SPI两种常见的通信协议之间区别

冬至子 来源:汽车软件开发工程师 作者:良皮儿 2023-11-30 16:50 次阅读

在与ECU或者嵌入式相关的工作中, 我们肯定会接触到各种通信协议, 很多协议有很多类似的地方, 也容易混淆. 本文来介绍一下两种常见的通信协议之间的区别.

I2C 和 SPI 都是允许用户进行短距离串行数据传输的总线协议. I2C 是飞利浦(现在的 NXP)制定的两线通信, 而 SPI 是由摩托罗拉制定的. 这两种协议通常用于智能手机、电视和笔记本电脑电子设备, 以控制电源管理芯片、存储设备、输入设备等外围设备.

什么是I2C?

I2C 是一种串行通信协议. 它为慢速设备提供了良好的支持, 例如 EEPROMADC 和 RTC 等. I2c 不仅可以用于单板, 还可以用于其他通过电缆与板连接的外部组件.

I2C 基本上是一种两线通信协议. 它仅使用两线进行通信. 其中一根线用于数据(SDA), 另一根线用于时钟(SCL).

在 I2C 中, 两条总线都是双向的, 这意味着主机能够发送和接收来自从机的数据. 时钟总线由主机控制, 但在某些情况下, 从机也能够抑制时钟信号.

图片

此外,I2C总线用于各种控制架构, 例如SMBus(系统管理总线)、PMBus(电源管理总线)、IPMI(智能平台管理接口)等.

I2C通信协议的优点

I2C协议有很多优点, 让用户在很多应用中不得不使用I2C协议. 下面是I2C的主要优点:

  • 它是同步通信协议, 因此主从不需要精确的振荡器.
  • 它只需要两根线, 一根线用于数据(SDA), 另一根线用于时钟(SCL).
  • 它为用户提供了根据要求选择传输速率的灵活性.
  • 在 I2C 总线中, 总线上的每个设备都可以独立寻址.
  • 它遵循主从关系.
  • 它能够处理 I2C 总线上的多个主机和多个从机.
  • I2C 具有一些重要的特性, 例如仲裁、时钟同步和时钟延长.
  • I2C 提供 ACK/NACK(确认/不确认)功能, 可帮助处理错误.

I2C 通信协议的缺点

I2C 协议有很多优点, 但除此之外, I2C 也有一些限制:

  • 由于开漏拓扑, 它比其他串行通信总线消耗更多的功率.
  • 它仅适用于短距离.
  • I2C 协议对从机的数量有一定的限制, 从机的数量取决于 I2C 总线的电容.
  • 它只提供一些有限的通信速度, 如 100 kbit/s、400 kbit/s 等.
  • 在 I2c 中, 设备可以设置它们的通信速度, 运行速度较慢的设备可以延迟速度较快的设备的运行.

什么是SPI?

串行外设接口是基于四线的全双工通信协议, 这些线通常称为 MOSI(主出从入)、MISO(主进从出)、SCL(由主产生的串行时钟)和 SS(从 选择线, 用于在通信过程中选择特定的从站).

图片

SPI 遵循主从架构, 通信始终由主机启动. 与 I2C 一样, 它也是一种同步通信协议, 因为时钟由主从共享.

SPI 只支持多从机, 不支持多主机, 从机由从机选择信号选择. 在 SPI 通信期间, 数据通过移位寄存器从主机移出, 反之亦然.

SPI通讯协议的优点

  • 没有起始位和停止位, 因此数据可以不间断地连续流式传输.
  • 它支持全双工.
  • 从设备中不需要精密振荡器, 因为它使用主时钟.
  • 没有像 I2C 这样复杂的从机寻址系统.
  • 比 I2C 更高的数据传输速率(几乎是 I2C 的两倍).
  • 将 MISO 和 MOSI 线分开, 因此可以同时发送和接收数据.
  • 简单的软件实现.

SPI通讯协议的缺点

  • 如果通信中的从站不止一个, 那么接线会很复杂.
  • 使用四根线(I2C 和 UART 使用两根).
  • 不确认数据已成功接收(I2C 具有此功能).
  • 没有像 UART 中的奇偶校验位那样的错误检查形式.
  • 它只允许一个主机.

嵌入式系统中, I2C和SPI都扮演着重要的角色. 这两种通信协议都是同步通信的例子, 但仍然有一些重要的区别. 在下表中, 我指出了 SPI 和I2C(SPI 与 I2C)之间的一些常见差异.

下表直观的对I2C 和 SPI 进行一个对比:

1.jpg

2.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 振荡器
    +关注

    关注

    28

    文章

    3832

    浏览量

    139077
  • 电源管理
    +关注

    关注

    115

    文章

    6183

    浏览量

    144495
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1706

    浏览量

    91567
  • 时钟信号
    +关注

    关注

    4

    文章

    448

    浏览量

    28568
  • I2C协议
    +关注

    关注

    0

    文章

    26

    浏览量

    8475
收藏 人收藏

    评论

    相关推荐

    i2c通信协议

    1.1 i2c通信协议通信协议:用来实现数据传输。i2c物理总线:SCL(时钟线) SDA(数据线)i2c
    发表于 03-06 16:15

    介绍一下SPI协议

    文章目录前言SPI介绍1.SPI总线2.寻址方式二、通信原理1.
    发表于 02-17 07:44

    SPII2C、UART串行总线协议

    串口通讯通信协议UART,以及常用外设通信协议 SPII2C介绍与他们之间
    发表于 11-30 11:28 95次下载

    spii2c总线协议的对比分析

    通信协议非常适合近距离低速芯片间通信。Philips(for I2C)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种
    发表于 12-06 11:57 2491次阅读

    I2C通信协议应该如何学习

    我最近刚做完I2C通信协议的编写与调试,下面介绍一下我从开始理解夏老师的程序,修改程序,直到
    发表于 04-28 08:00 21次下载
    <b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>应该如何学习

    SPI通信协议讲解

    I2C通信协议大概,弄懂了I2C通信那么相信你也可以轻松弄懂的,因为I2CSPI
    发表于 12-22 19:19 26次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>讲解

    分享个单片机的I2CSPI通信

    I2CSPI两种不同的通信协议。听到协议,似乎高不可攀,其实协议就是人们定义的
    发表于 02-08 15:31 1次下载
    分享<b class='flag-5'>一</b>个单片机的<b class='flag-5'>I2C</b>和<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>

    i2cspi通信协议的概念与区别 I2C/SPI总线通信协议你搞懂没有

    计划第四期:硬声UP主@硬件研究狮 从工程实践的角度,给大家拆解I2CSPI。     四分钟搞定通信协议的分类 简介: 同步通信与异步通信
    的头像 发表于 06-23 17:19 3655次阅读

    Arduino常用的三通信协议 2

    UART、I2CSPI是嵌入式世界里最常见的三通信协议。在阅读教程,或者购买模块时常常看见“这个模块是用
    的头像 发表于 02-13 10:31 2881次阅读
    Arduino常用的三<b class='flag-5'>种</b><b class='flag-5'>通信协议</b> <b class='flag-5'>2</b>

    简述UART、SPII2C协议区别

    I2CSPI、UART都是常见的低速板级通信协议 ,目前主流的SoC都内置了这些通讯协议的控制器,同样,各种传感器、Touch控制器、指纹
    的头像 发表于 02-17 10:50 2533次阅读
    简述UART、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b><b class='flag-5'>协议</b><b class='flag-5'>区别</b>

    文搞懂UART、I2CSPI协议

    UART、I2CSPI都是常见的低速板级通信协议,目前主流的SoC都内置了这些通讯协议的控制器,同样,各种传感器、Touch控制器、指纹模
    的头像 发表于 03-26 09:29 2078次阅读

    I2C通信协议:了解I2C Primer、 PMBus和SMBus

    I2C,即Inter-Integrated Circuit,是一种常用的串行通信协议,用于在器件之间——特别是个或
    的头像 发表于 06-15 15:29 5749次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>:了解<b class='flag-5'>I2C</b> Primer、 PMBus和SMBus

    i2c接口和spi接口区别

    些重要的区别I2C接口和SPI接口都属于串行通信接口标准,广泛应用在嵌入式系统和电子设备中。它们之间的主要
    的头像 发表于 12-25 15:02 4029次阅读

    SPII2C通信协议:应用与区别

    本文深入解析了SPII2C两种通信协议的特点、工作原理和应用场景。SPI适用于高速数据传输,常用于存储器芯片和显示器驱动等领域;
    的头像 发表于 04-22 16:45 1829次阅读

    简单认识I2C通信协议

    I2C(Inter-Integrated Circuit)通信协议是由飞利浦公司(现为恩智浦半导体)开发的一种简单、双向二线制同步串行总线协议。自1982年发布以来,
    的头像 发表于 07-25 18:06 1459次阅读