I2C 总线多主多从

I2C Bus multi master multi slave

我正在研究 Ti 的 EK-TM4C1294XL,它基本上是一个 Arm Cortex M4 评估板。我正在经历相同的 I2C 总线,并且有以下关于 I2C 总线的问题。

我了解 I2C 支持多主多从配置。因此,当我们想要将数据从特定主机发送到特定从机时,我们首先从该主机写入总线上的从机地址,然后在收到 Ack 后将数据传输到该从机。

所以在同样的情况下,我想从一个特定的从站接收数据到一个特定的主站,但是从站可以开始通信吗? 就像假设从机是一个 ADC,一旦转换完成,将转换后的数据发送到特定的主机。 这在 I2C 中可能吗?

在I2C中,主机总是发起与从机的通信,即使只是为了让从机发送数据。起始条件后的第一个字节将包含一个 7 位地址和一个指示它是写还是读的位。如果从机属于可能具有异步事件的类型(即 ADC 运行 连续转换),通常我希望看到一个与 I2C 总线分开的信号(注意信号、中断信号,或者如果您的I2C 设备实际上是一个 SMBus 设备,SMBALERT#),它会改变状态以指示事件已经发生并且主设备应该查询该设备。