什么时候我应该使用I2C,什么时候应该使用SPI?

时间:2017-04-15 04:06:27

标签: embedded microcontroller firmware

  1. 我想了解一下SPI和I2C通信协议 是比较快的?我在一篇文章中读过,SPI比较快但是它们 还没有解释为什么?是因为少了 与I2C相比时SPI的开销(如start,ack,stop)?
  2. 哪一个比两个更好?我已经看到ADC主要是SPI 是首选,但为什么?对于Flash我也主要看过SPI 正在使用的协议,但对于传感器SPI和I2C。现在,是什么造就的 至于决定对于一个外围设备我应该选择SPI和 另一个I2C是首选吗?

1 个答案:

答案 0 :(得分:3)

更好的问题是何时应该使用I2C以及何时应该使用SPI。像工程中一样,两种协议都有不同的优缺点。我在下面对它们进行了比较,以便您能够评估哪些更符合您的要求。

我自己的快速比较:

I2C vs SPI by Krystian Sakowski

补充说明:

  • SPI通常用于速度很重要的从属设备,例如ADC外设,FLASH存储器等。
  • I2C通常用于从设备,这些设备在I2C速度限制下很好,或者像传感器一样慢,可能需要更长的时间来获得测量,例如流行的温度和湿度传感器HTU21-D与I2C执行3-16 [ms]之间的测量(此时间取决于所选的测量分辨率)。
  • Post explaining I2C Bus Length constrains.
  • Post explaining why SPI is faster than I2C

<强> PS:

  • 最快的ADC外设不使用I2C或SPI。他们使用并行I / O.
  • 请记住,对于简单(爱好)项目,它通常无关紧要,你会对它们中的任何一个都没问题。