如何知道I2C总线在多主机环境中是否忙?

时间:2019-02-19 05:04:24

标签: embedded i2c firmware

假设一个I2C网络具有多个连接的主节点和一些从节点。 主机已经在与特定的从机通信。 现在,如果另一个主设备希望通过在总线中发送一些从设备地址来启动通信,那么新的主设备将如何知道该总线已经处于繁忙状态,并且应该等到它释放之后?

1 个答案:

答案 0 :(得分:1)

所有设备(主机和从机)都将跟踪总线的状态。

一旦发现启动条件,总线就被认为是繁忙的,直到收到停止信号为止。哪个主人真正拥有总线取决于总线仲裁。

丢失仲裁的主机将报告仲裁丢失(通过寄存器中的某些标志),并将等待直到找到停止条件。

如果主服务器未发起事务,它将报告总线正忙于其他标志,并将继续跟踪总线状态以检测停止条件。

无法通过仅对总线线路进行一次采样来判断总线是否空闲。是的,如果您看到某条线路的状态为0,则肯定意味着该总线处于繁忙状态,但是当您将两条线路都视为1时,这并不意味着该总线仍处于空闲状态。所有设备必须跟踪总线状态变化以检测启动/停止条件。