深入探讨嵌入式系统中SPI协议相较于IIC协议更快的原因

之前面试嵌入式方面的工作的时候,因为工作方面对于SPI和IIC有一定的要求,所以会提问到相关协议的问题。

SPI和IIC协议相比较更快的原因:

1.从软件协议上来说。

由于IIC的引脚较少,所以不得不在仅有两条数据线的情况下,设置更为复杂的协议来进行规范。

比如IIC的起始信号、校验位、应答位、停止信号。

而且由于IIC可以连接多个从机,在主机需要指定一个从机去发送信号的时候,还需要先发送9个数据(选址数据)来指定从机。

但是对于SPI来说,因为有时钟信号线,所以SPI在软件上,不需要起始信号、停止信号来确保主从机发送接收在同一个频率(不会出现错位接收的情况)。同时片选引脚,可以通过输出高低电平到从机的CS引脚上,来选择对应的从机,就不需要额外再发送从机地址来进行选址。

以上是从软件角度上说明,但这并不是主要原因。

2.从硬件角度来说明。

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

SPI:所有线路均由发送器驱动为高电平和低电平.这最大限度地减少了电线改变状态所需的时间.

I2C:所有线路都是集电极开路,这意味着变送器只能将线路驱动为低电平.当变送器释放线路时,连接到Vcc的电阻(电源电压)将灯拉高.然而,由于导线和元件的电容,导线相对缓慢地变为高电压.因此,必须降低时钟速度,以便让线路"漂移"高的时间。

硬件的原因参考于下面的网页。

是什么让SPI比I2C协议更快 |

简单来说,就是SPI的电平变化是有发送器驱动来执行,硬件不管你软件设置什么协议,硬件我就快速拉高和拉低就可以。而IIC拉高电平则是通过上拉电阻来实现,由于导线等电气特性,电平是缓慢拉高到对应电压,为了适配这种情况不得不对IIC的时钟速度进行限制。

当然后续IIC也有对硬件进行提升的方案,最高也能保证IIC运行在Mbps以上的速率。但由于软件上的限制,依然会比SPI要更慢。

以上是我根据网上的资料,以及自己对两种协议的理解提出的一些拙见,别杠杠就是你对。

欢迎各位大佬提出额外的可能性,个人觉得可能还有一些其他原因,如果有更好的内容我再做补充。

物联沃分享整理
物联沃-IOTWORD物联网 » 深入探讨嵌入式系统中SPI协议相较于IIC协议更快的原因

发表评论