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

1 回答 1

4

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 限制等等。有很多原因你不能说一个比另一个“更好”。对您的设计更好的东西并不是那么简单。

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

于 2013-11-09T05:52:45.010 回答