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

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

3天内不再提示

I2C和SPI通信协议的主要差异在哪?

玩转单片机与嵌入式 来源:玩转单片机与嵌入式 作者:观海听涛 2022-11-09 09:50 次阅读

有很多串行通信协议,但其中I2C和SPI非常有名。I2C 和 SPI 都是总线协议,允许用户进行短距离的串行数据传输。I2C是飞利浦(现在是NXP)制造的两线通信,而SPI是摩托罗拉制造的。

这两种协议通常用于智能手机、电视和笔记本电脑电子设备中,以控制电源管理芯片、存储设备、输入设备等外围设备。

在本文中,我们讨论一下I2C和SPI之间的区别。本文讨论的目录如下:

一:什么是I2C

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

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

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

39f71ec8-5fbc-11ed-8abf-dac502259ad0.jpg

二:I2C协议的优点

I2C 协议有很多优点,使得用户在很多应用中不得不使用 I2C 协议。

它是同步通信协议,因此主从不需要精确的振荡器

它只需要两根线,一根用于数据 (SDA),另一根用于时钟 (SCL)。

它为用户提供了根据要求选择传输速率的灵活性。

在 I2C 总线中,总线上的每个设备都是可独立寻址的。

它遵循主从关系。

它能够处理 I2C 总线上的多个主机和多个从机

I2C 具有一些重要功能,例如仲裁、时钟同步和时钟延长。

I2C 提供 ACK/NACK(确认/未确认)功能,可帮助处理错误。

三:I2C总线的缺点

I2C 协议有很多优势,但除此之外,I2C也会存在缺点。

由于开漏拓扑,它比其他串行通信总线消耗的功率更多。

它只适用于短距离。

I2C 协议对从机的数量有一定的限制,从机的数量取决于 I2C 总线的电容

它只提供一些有限的通信速度,如 100 kbit/s、400 kbit/s 等。

在 I2c 中,设备可以设置它们的通信速度,并且在运行时需要等待应答信号等,运行速度较慢的设备可能会延迟速度较快的设备的运行。

四:什么是SPI?

SPI(serial peripheral interface)是基于四线的全双工通信协议,这些线通常被称为 MOSI(master out slave in)、MISO(master in slave out)、SCL(由 master 产生的串行时钟)和 SS(slave 选择线,用于在通信期间选择特定从站)。

3a9749d4-5fbc-11ed-8abf-dac502259ad0.png

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

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

五:SPI通信的优点

总结的SPI通信协议的优点如下:

没有开始位和停止位,因此数据可以连续流式传输而不会中断。

它支持全双工。

从设备中不需要精密振荡器,因为它使用主时钟。

没有像 I2C 这样复杂的从机寻址系统。

比 I2C 更高的数据传输速率(几乎快两倍)。

MISO和MOSI线分开,可以同时发送和接收数据。

软件实现比较简单。

六:SPI通信的缺点

如果有多个从站进行通信,则接线会很复杂。

使用四根线(I2C 和 UART 使用两根线)。

没有确认数据已成功接收(I2C有)。

没有像 UART 中的奇偶校验位那样的错误检查形式。

它只允许一个主机。

七:SPI和I2C的区别

嵌入式系统中,I2C和SPI都扮演着重要的角色。两种通信协议都是同步通信的例子,但仍然有一些重要的区别。

在下表中,列出了SPI和I2C之间的一些常见差异。

I2C SPI
‍‍‍‍‍‍‍‍I2C 可以是多主机和多从机,这意味着可以有多个主机和从机连接到 I2C 总线。 SPI 可以支持多从机,不支持多主机,这意味着只能有一个主机连接到 SPI 总线
I2C 是一种半双工通信协议 SPI 是一种全双工通信协议
I2C 具有时钟延长的特性,这意味着如果从机无法以足够快的速度发送快速数据,则它会抑制时钟以停止通信。 SPI无始终延长特性
I2C仅使用两根线进行通信,一根用于数据,另一根用于时钟 SPI 需要三线或四线进行通信(取决于要求):MOSI、MISO、SCL 和片选引脚
通信速度:I2C 比 SPI 慢 与 I2C 相比,SPI 更快
I2C 比 SPI 消耗更多功率 与 I2C 相比,功耗更低
I2C 比 SPI 更不易受噪声影响 SPI 比 I2C 更容易受到噪声的影响
I2C 比 SPI 通信协议实现起来更便宜 与 I2C 相比,成本较高
I2C 工作在“线与”逻辑上,它有一个上拉电阻 在 SPI 的情况下不需要上拉电阻
在 I2C 通信中,我们在每个字节后得到确认位 SPI 通信协议不支持确认位
I2C 确保发送的数据被从设备接收 SPI 不验证数据是否正确接收
I2C 是一种多主机通信协议,所以它具有仲裁功能 SPI 不是多主机通信协议,因此它不具备仲裁属性
I2C 是基于地址的总线协议,通信前需要发送从机的地址 在 SPI 的情况下,您必须使用从机选择引脚选择从机进行通信
由于开始位和停止位,I2C 有一些额外的开销 SPI 没有开始位和停止位
I2C 支持同一总线上的多个设备,无需任何额外的选择线(根据设备地址工作) SPI 需要额外的信号(从选择线)线来管理同一总线上的多个设备
I2C更适合长距离 SPI更适合短距离
I2C 由 NXP 开发 SPI 由摩托罗拉开发







审核编辑:刘清

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

    关注

    9

    文章

    1033

    浏览量

    81895
  • SPI协议
    +关注

    关注

    0

    文章

    18

    浏览量

    8388
  • I2C协议
    +关注

    关注

    0

    文章

    26

    浏览量

    8518

原文标题:通过一张表区分I2C和SPI通信协议(都是串行通信,两者有什么区别)

文章出处:【微信号:玩转单片机与嵌入式,微信公众号:玩转单片机与嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    逼真动画展示I2CSPI、UART的通信过程

    到目前为止,I2CSPI和UART等仍然是电子嵌入式设备中最常用的通信协议,本文,我们将剖析这三种协议,让大家清楚、直观的了解它们的功能、优点和局限性,并辅以GIF动图展示。
    的头像 发表于 04-12 08:27 1048次阅读
    逼真动画展示<b class='flag-5'>I2C</b>、<b class='flag-5'>SPI</b>、UART的<b class='flag-5'>通信</b>过程

    i2c通信协议

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

    I2C通信协议硬软件

    目录12C通信协议硬软件I2CAHT20测温湿度参考12C通信协议I2C
    发表于 08-23 07:42

    I2C通信协议的原理是什么

    I2C通信协议I2C通信原理I2C通信原理:I2C
    发表于 02-17 07:16

    SPII2C、UART串行总线协议

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

    实验八-I2C通信协议

    实验八-I2C通信协议,感兴趣的可以瞧一瞧。
    发表于 09-22 16:42 2次下载

    spii2c总线协议的对比分析

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

    I2C通信协议应该如何学习

    我最近刚做完I2C通信协议的编写与调试,下面介绍一下我从一开始理解夏老师的程序,修改程序,直到下板调试整个的学习过程,希望对大家学习 I2C 有一定的帮助。一、 分析源代码学习 I2C
    发表于 04-28 08:00 22次下载
    <b class='flag-5'>I2C</b><b class='flag-5'>通信协议</b>应该如何学习

    关于stm32通信协议:软件模拟SPI、软件模拟I2C的总结(fishing_8)

    趁着帮老师代上嵌入式实验课的机会,又重新熟悉了一遍stm32的通信协议:串口协议SPI协议I2C协议
    发表于 12-05 13:51 3次下载
    关于stm32<b class='flag-5'>通信协议</b>:软件模拟<b class='flag-5'>SPI</b>、软件模拟<b class='flag-5'>I2C</b>的总结(fishing_8)

    SPI通信协议讲解

    SPI通信协议讲解SPI通信概念SPI通信SPI
    发表于 12-22 19:19 26次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>讲解

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

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

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

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

    UART、SPII2C比较 串口通信介绍

    ,较少用于远距离通信SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议I2C
    的头像 发表于 11-09 18:06 1530次阅读
    UART、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>比较 串口<b class='flag-5'>通信</b>介绍

    SPII2C通信协议:应用与区别

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

    简单认识I2C通信协议

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