I2C / SPI面试问题

时间:2013-11-09 05:02:26

标签: linux serial-port signal-processing i2c spi

  1. 系统在I2C和SPI中运行(热交换)时是否可以添加和删除设备?
  2. 使用I2C或SPI在微处理器和DSP之间进行数据通信是否更好?
  3. 使用I2C或SPI进行ADC数据通信是否更好?

1 个答案:

答案 0 :(得分:3)

1)当然,没有任何限制。

SPI是最简单的,因为每个器件都有一个独立的芯片选择。您只需确保SPI设备在连接/断开连接过程中的某个时刻不认为其芯片选择处于活动状态,或者它可能会断言其MISO线并引发争用。有许多方法可以对SPI器件的电源或复位进行排序,以确保器件正常工作。

I2C会比较棘手......因为在传输过程中连接的设备可能会将正在进行的传输中看到的第一个字节解释为命令,并可能会做坏事。您可以使用一个双向电平转换器或缓冲器来启用,也可以使用一个触发器来锁定热交换I2C器件前面的使能,并选通一个辅助“bus_clear”消息,以便在这些处于空闲时间段时启用任何新的热交换缓冲器。公交车。有很多方法可以完成同样的事情。

2)和3)没有一般性答案。

SPI能够更快地运行,所以如果你需要速度,那就更好了。微到DSP意味着。然而,除非你开始假设,否则只有一个是微型而另一个是DSP的事实并没有告诉你任何事情。如果micro只是从一整套DSP获得小的结果包怎么办? I2C会使这更容易。

同样,ADC 可能需要速度,或者它们可能不需要。如果有很多并且所需的数据速率很低,那么I2C再次更有意义。

SPI几乎总是更易于使用,所以如果没有太多设备,这是一个加分。 I2C使用更少的引脚。

很多时候,I2C或SPI之间的选择是基于您要使用的部件作为接口提供的。另一个非常重要的因素是ELSE需要在系统中发生什么,以及哪种总线对尽可能多的部件有意义。

还有更多:设计重用,奇怪的固件/ RTOS限制等等。有很多原因你不能说一个人比另一个人“更好”。对你的设计更好的事情就是那么简单。

我认为这些问题是“让你说话”的问题......