I2C 与 SPI:你应该知道的差异
您是否正在设计一个项目,在 I2C 与 SPI 之间进行选择至关重要?但是你不知道该选哪一个?如果是,我们将帮助您确定哪个更适合您的项目。
首先,I2C 和 SPI 是“低端”协议。但它们易于使用并且非常适合 PCB 上的芯片之间的通信。
但是,为您的项目选择错误的协议可能会导致不良结果。不过,我们在这里帮助您了解这两种类似协议之间的区别。
你准备好了吗?开始吧!
什么是 SPI 协议?
在 1980 年代,摩托罗拉开发了 SPI 协议,用于在当时的微控制器与 EEPROM 等其他外围设备之间建立通信。

EEPROM
因此,SPI 协议使用四根信号线进行部件之间的通信。但是,重要的是要注意这些不包括接地线和电源线。以下是四根有源信号线:
- SS:从选择线(由主 SPI 控制)
- MOSI:Master Out Slave In(由主 SPI 控制)
- SCLK:串行时钟(由主 SPI 控制)
- MISO:Master In Slave Out(由主 SPI 设备控制)
在此说明中,这四行允许主 SPI(控制设备)与从属 SPI(外围设备)进行通信。

SPI 协议接口
此外,您只能在 SPI 总线上拥有一个控制器设备。但是,您可以添加的外围设备数量没有限制。此外,添加更多外围设备意味着增加 SS 线。因此,这里展示了如何使用三个单独的 SS 线来控制不同的外围设备。

具有多个被奴役人员的 SPI 协议接口
此外,当主 SPI 想要通过发送或接收数据与外设通信时,它会拉出匹配的 SS 线。因此,这条线将在下方。因此,SCLK 线激活,并以设定的频率为高电平和低电平。
此外,主 SPI 使用 MISO 线同时发送数据和样本。另外,请记住,一次只能在一个外设和主 SPI 之间进行通信。
什么是 I2C
或者,在 1982 年,飞利浦半导体(现为 NXP 半导体)开发了第一个 I2C 协议,以系统化一个 PCB 上的芯片之间的通信。
与 SCI 协议不同的是,I2C 协议有两条通信线——不包括地线和电源线。这些行包括:
- SDA:串行数据线
- SCL:串行时钟线
因此,您可以将任意数量的奴役和代理设备连接到一条总线。此外,您必须将 SCL 和 SDA 线都保留为开漏线。因此,您的设备一次只能有一条低线。此外,您的管道上还需要一个上拉电阻。这样,您就可以将您的线路拉回高位。

I2C 协议接口
由于 I2C 协议的开漏设计,您可以在同一条总线上使用多个主设备。但是如果两个控制器设备同时开始通信,就会有一个仲裁导致其中一个设备停止传输。
同时,控制器设备在通信发生时监控 SDA 线路。因此,如果一个设备在发送时检测到 SDA 线为低电平,它将停止发送。这允许另一个控制器设备进行通信。
此外,控制器 I2C 设备将发送 START 条件以启动通信。因此,SDA 线将处于低电平,而 SCL 线将保持高电平。
然后,控制器设备将发送它想要发送到的接收方的 7 位地址和读取位 (1) 或写入位 (0)。此时,总线上的设备只有通过将 SDA 线设为低电平来响应匹配的 7 位速率地址。
I2C 和 SPI 的区别
SPI 和 I2C 都是相似的,因为它们都是“低端”协议。此外,这两种协议都缺乏其重量级表亲(SATA、以太网、USB 等)所拥有的速度和其他功能。
但是当涉及到工作原理和功能时。让我们仔细看看这两种协议之间的区别。

USB 连接器
首先,您可以在 SPI 协议上设置四种不同的模式来确定时钟的工作方式。为了使通信正常工作,奴役设备和代理设备必须使用相同的模型。
- 模式 0:在时钟上升沿采样数据,时钟空闲为低电平
- 模式 1:在时钟下降沿采样数据,时钟空闲为低电平
- TMode 2:在时钟下降沿采样数据,时钟空闲为高电平
- 模式 3:在时钟上升沿采样数据,时钟空闲为高电平
此外,SPI 数据传输速度可以超过 10 Mbps,非常适合传输大量数据。此外,您还可以在 LCD 和加速度计等具有快速更新速率的传感器上找到 SPI 协议。

液晶显示器
或者,I2C 一次只能发送一个字节数据包中的数据。此外,接收外设必须使用 ACK 位确认每个字节。此外,I2C 协议具有三种不同数据传输速度的模式。
确认位
标准模式最高可达 100 kbps,快速模式最高可达 400 kbps,高速模式最高可达 3.4 Mbps。因此,I2C 协议比 SPI 协议慢得多。因此,I2C 协议最适用于温度传感器和模数转换器。

温度传感器
比较 I2C 和 SPI
下表进一步显示了 I2C 和 SPI 之间的显着差异:
特征 | SPI | I2C |
引脚驱动 | 推拉模式 | 开漏模式 |
最大。速度 | 无(但您可以找到 10 – 100 Mbps) | 100 kbps(标准方式)400 kbps(快速方式)3.4 Mbps(高速方式) |
多主机 | 没有 | 是的 |
信号线 | 4(额外的设备增加额外的行) | 2 |
没有。外设 | 主 SPI 上可用于 SS 线的引脚数是您可以拥有的外设数量的唯一限制 | 最大。 112 个,7 位寻址 |
流控制 | 没有 | 是的 |
SPI 与 I2C 协议 - 优点和缺点
SPI
优点
- SPI 协议耗电量小
- 它还支持高速全双工通信
缺点
- 存在导致兼容性问题的不同版本和自定义变体
- 您需要额外的信号线来与同一总线上的多个外围设备进行通信
- 仅支持短距离通信。您不能将数据传输到不同板上的设备
I2C
优点
- 您无需额外的线路即可控制同一总线上的多个设备
- 可以将数据传输到其他 PCB,但传输速度较低
- 对噪音的敏感度较低
- 可以远距离传输数据
- 使用成本低于 SPI
缺点
- 传输速度比 SPI 慢
- 比 SPI 协议使用更多功率
- 一个设备释放通信总线失败会锁定I2C协议
在选择 SPI 和 I2C 时应考虑的因素
为您的项目选择最佳协议超越了价格标签。因此,在做出选择之前需要考虑以下几点:
引脚有限
以下是 SPI 和 I2C 协议的优缺点:如果您不喜欢使用超过 100 个引脚的微控制器,这是需要考虑的关键因素。在这种情况下,您应该选择需要较少通信线路的协议。
力量
根据您的设计,您可能希望最小化或最大化功耗。因此,您必须确保选择最适合您的消费需求的协议。
速度
在传输大量数据时,每一微秒都是至关重要的。因此,如果您需要速度,请选择符合您的速度标准的协议。
PCB 尺寸
在选择任何协议之前,考虑 PCB 的尺寸至关重要。因此,您将增加获得理想结果的机会。
在 SPI 和 I2C 之间进行选择
以下是每个协议的功能,可帮助您为您的设计做出最佳决策:
特点 | SPI | I2C |
速度 | 如果您的设计需要更高速的传输,SPI 协议是最佳选择。 | 您可以为低速设备的设计选择 I2C |
PCB尺寸 | 如果您不在意 PCB 的尺寸,那么 SPI 或 I2C 都不会出错。 | 如果您的 PCB 尺寸较小且走线较少,请考虑选择 I2C |
有限的引脚 | 如果您不介意添加额外的通信线路,请选择 SPI 协议。 | 如果您对许多轨道不满意,那么 I2C 是一个理想的选择。 |
电源 | 对于低功耗设备,使用SPI协议 | 对于功耗较高的设备,使用I2C协议 |
了解 UART
UART 是集成或微控制器中的物理电路,可在嵌入式系统中的设备之间建立串行通信。
此外,在处理 UART 通信时,UART 发送器和 UART 接收器之间始终存在直接通信。
UART 与 I2C 与 SPI
与 SPI 和 I2C 等其他通信协议相比,UART 是纯物理的。另外,它不使用主/从范式进行通信。相反,微控制器使用两个 UART 设备来发送和接收数据。此外,您只需要两条线即可进行 UART 通信。电缆将有助于将数据从发送器的 Tx 引脚传输到接收器的 Rx 引脚。

UART 协议接口
四舍五入
实际上,SPI 和 I2C 协议用于各种应用。有时,您可能会发现自己的设备在一个芯片上具有 SPI 和 I2C 接口。所以,你不必在两者之间做出选择。
但是,如果您需要在两种协议之间进行选择,SPI 更适合需要更快传输速度的项目。另一方面,如果你的微控制器的引脚有限,I2C 协议会更好。
有任何问题吗?欢迎与我们联系。我们非常乐意提供帮助。
工业技术