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

Embedded 如何知道I2C总线在多主机环境中是否繁忙?,embedded,i2c,firmware,Embedded,I2c,Firmware,假设I2C网络连接了多个主设备和一些从设备。 主设备已经在与特定的从设备通信。 现在,如果另一个主设备想通过在总线中发送一些从设备地址来启动通信,那么新的主设备如何知道总线已经忙了,它应该等待直到释放为止?所有设备(主设备和从设备)都将跟踪总线的状态 一旦发现启动条件,总线将被视为繁忙,直到收到停止。由总线仲裁决定哪一个主机确切拥有总线 失去仲裁的主机将报告失去仲裁(通过寄存器中的一些标志),并等待找到停止条件 如果主机没有启动事务,它将报告总线正忙,并使用其他标志,并将继续跟踪总线状态以检测停

假设I2C网络连接了多个主设备和一些从设备。 主设备已经在与特定的从设备通信。 现在,如果另一个主设备想通过在总线中发送一些从设备地址来启动通信,那么新的主设备如何知道总线已经忙了,它应该等待直到释放为止?

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

一旦发现启动条件,总线将被视为繁忙,直到收到停止。由总线仲裁决定哪一个主机确切拥有总线

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

如果主机没有启动事务,它将报告总线正忙,并使用其他标志,并将继续跟踪总线状态以检测停止条件

仅对一条公交线路采样一次,无法判断这辆公交车是否免费。是的,如果你看到某条线路有0,那肯定意味着公交车很忙,但是当你看到两条线路都是1时,那并不意味着公交车还空着。所有设备必须跟踪总线状态变化,以检测启动/停止条件。

这有帮助吗?