动态寻址 I2C 从设备;即插即用

Dynamic addressing I2C slaves; making it plug-and-play

我正在使用 National Instruments LabVIEW 的 I2C 模块控制几个 i2c 从设备 (PCA9505)。我需要改进项目,这样我就可以在不手动调整从站地址的情况下向总线添加新的从站。 (PCA9505 上的 引脚 A0 A1 A2 )。因此,硬编码地址不是一种选择。

此外,PCA只有3个引脚,所以我最多可以添加8个从机。我需要去 16.

如何给从站动态地址?

如何扩展到16个slave?

感谢您的帮助!

PS:PCA9505 = 40 位并行 input/output (I/O) I2C 总线应用的端口扩展

就个人而言,我喜欢使用配置文件来设置应用程序所需的参数。在这种情况下,它将定义您需要与之通话的每个设备的地址。数组在这里对可扩展性也有很大帮助。

就扩展 I2C 总线而言,您可以使用 PCA9544A I2C 多路复用器之类的东西。该芯片允许控制 4 种不同的总线。作为单个芯片寻址的一部分,您必须控制多路复用器。

PCA9505 datasheet 的简短阅读来看,除了使用这些地址行之外,似乎没有任何方法可以选择设备的地址。您要么必须按照 crossrulz 的建议对总线进行多路复用,以便每个设备都位于不同 I2C 总线上的相同地址,并添加代码来控制您在任何时候与哪个设备通话,或者添加一些设置的硬件每个设备的地址线不同。

设备会通过某种连接器添加到总线吗?如果可以,您能否在连接器中包含地址线,以便主适配器上的每个连接器为插入其中的设备设置不同的地址?或者,如果您在菊花链中连接设备,每个设备都可以将其上游连接器上的地址加 1,并在其下游连接器上输出新地址?