是啥让 SPI 比 I2C 协议更快 [关闭]

Posted

技术标签:

【中文标题】是啥让 SPI 比 I2C 协议更快 [关闭]【英文标题】:What makes SPI faster than I2C protocol [closed]是什么让 SPI 比 I2C 协议更快 [关闭] 【发布时间】:2014-03-17 21:40:16 【问题描述】:

我了解 I2C 和 SPI 通信的基础知识。因为两者都是同步协议。我想知道是什么让 SPI 比 I2C 更快。如果我使用 I2C 没有错,我们可以使用 400kbps,而在 SPI 中我们也可以达到 10mbps。是因为硬件变化吗? 在一次采访中向我提出了这个问题。如果我错了,请纠正我。

【问题讨论】:

这个问题似乎是题外话,因为它是关于硬件,而不是编程。 速度取决于您使用的电路板类型以及硬件逻辑的实现方式。使用其中一个有一定的优点和缺点。选择使用哪种总线类型取决于您想要使用它们连接的不同外围设备之间需要哪种通信类型。 quick2wire.com/articles/i2c-and-spi 看看stackexchange中的这个解释:electronics.stackexchange.com/questions/29037/…E. 实际上,它主要是关于 protocols - 硬件人员最熟悉的授予的低级协议,但同样的问题出现在网络堆栈等中。跨度> 不过,嵌入式系统问题以及硬件和软件之间的界限将在electronics.stackexchange.com 得到更好的接收。只要与嵌入式系统和低级编程相关,纯软件问题也始终是热门话题。 【参考方案1】:

I2C 非常复杂,支持总线上的多个主机。这会导致总线协议中的大量开销、每个字节的 ACK 以及对总线访问进行仲裁的故意延迟。还有一个设定的最大总线速率,在原始规范中为 100 kHz,现在 400 kHz 很常见,另外还有 10 kHz 低速和 3.4 Mhz 高速模式,2012 年规范定义了 5 Mhz 超快速模式。

SPI要简单得多,它是一个单主控,除了芯片选择之外没有总线协议,也没有设置最大总线速率。如果距离很短,那么你可以尽可能快地走。在相距不到一英寸的芯片之间的互连上相当快。

【讨论】:

【参考方案2】:

有一个重要的硬件差异限制了 I2C 的速度。

SPI:所有线路均由发送器驱动,无论是高电平还是低电平。这最大限度地减少了电线改变状态所需的时间。

I2C:所有线路都是集电极开路,这意味着发送器仅将线路驱动为低电平。当发射器释放线路时,连接到 Vcc(电源电压)的电阻器将灯拉高。然而,由于导线和元件的电容,导线进入高压的速度相对较慢。因此,必须降低时钟速度以使线路有时间“漂移”高。

【讨论】:

这是正确的(也是为什么它不是编程问题)。 如果您不知道答案,可以假设差异在于协议,而实际上硬件是主要限制因素。因此问题是关于编程的,而答案不是;)

以上是关于是啥让 SPI 比 I2C 协议更快 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

是啥让移动对象比复制更快?

除了多路复用和服务器推送之外,是啥让 http/2 比 http/1 更快?

是啥让访问 OLAP 多维数据集/数据集市和类似数据结构比访问关系数据库更快?

是啥让 API 变得“丰富”? [关闭]

嵌入式系统通讯协议

是啥让 nimble 比 shiro 更好?