我了解I2C和SPI通信的基础知识。由于两种协议都是同步的,所以我想知道是什么使得SPI比I2C更快。如果我没记错的话,在使用I2C时我们可以达到400kbps的速度,而在SPI中我们可以达到10mbps的速度。这是因为硬件方面的变化吗?这个问题是在我的一次面试中问我的。如果我有错误,请纠正我。
我了解I2C和SPI通信的基础知识。由于两种协议都是同步的,所以我想知道是什么使得SPI比I2C更快。如果我没记错的话,在使用I2C时我们可以达到400kbps的速度,而在SPI中我们可以达到10mbps的速度。这是因为硬件方面的变化吗?这个问题是在我的一次面试中问我的。如果我有错误,请纠正我。
有一个重要的硬件差异会限制I2C的速度。
SPI:所有线路都由发射器驱动高低电平。这最小化了线路改变状态所需的时间。
I2C:所有线路都是开漏的,这意味着发射器仅驱动线路为低电平。当发射器释放线路时,连接到Vcc(供电电压)的电阻会将线路拉高。然而,由于电线和元件的电容,电线相对缓慢地上升到高电压。因此,时钟速度必须降低以允许线路"漂移"到高电平。
I2C涉及较多,支持总线上的多个主设备。这在总线协议中产生了很大的开销,每个字节都需要一个ACK和有意的延迟来仲裁总线访问。此外,原始规范中设置了最大总线速率100 kHz,今天常见的是400 kHz,另外还有10 kHz低速和3.4 MHz高速模式,2012年规范定义了5 MHz超快模式。
SPI要简单得多,只有一个主设备,除了片选信号没有其他总线协议,也没有设置最大总线速率。如果距离较短,则可以尽可能地快。在距离不到一英寸的芯片之间的互连上非常快。