基于主机控制器就绪状态以及总线上有多个器件这一事实,IBI 生成和仲裁必须遵循一些规则,如下所述。所有这些情况都假定总线已处于无效状态的时长达 tAVAL。
- 当主机控制器在有 IBI 标头的情况下开始进行写入或读取时,TMP139 应开始在总线上驱动其自己的地址。主机应该一看到 IBI 标头以外的值就不再驱动 SDA,从而允许 TMP139 传输其器件标头并将 R/W 位设置为 1。
- 如果主机控制器可以接受来自器件的 IBI,则应确认器件地址,在 SCL 的下降沿释放总线并应接受 TMP139 发送的字节。
- 如果主机控制器无法接受来自器件的 IBI,则应确认器件地址并在总线上发出一个停止条件。TMP139 应仅在 tAVAL 时长之后重试另一个 IBI。
- 当主机控制器在没有 IBI 标头的情况下开始写入或读取总线上器件地址低于 TMP139 的器件时,器件应该一检测到不匹配就不再参与总线并仅在 tAVAL 时长之后重试另一个 IBI。
- 当主机控制器在没有 IBI 标头的情况下开始写入或读取总线上器件地址高于 TMP139 的器件时,该器件将在总线仲裁中胜出,主机将不再参与总线。主机可以通过发送确认来接受 IBI,也可以通过发送否定确认来忽略 IBI。在后一种情况下,TMP139 应仅在 tAVAL 时长之后重试另一个 IBI。
- 当主机控制器在没有 IBI 标头的情况下启动对也请求 IBI 的 TMP139 的写入或读取事务时,主机或 TMP139 可能胜出。
- 如果主机控制器启动一个写入事务,那么它将在总线仲裁中胜出,TMP139 将释放总线。TMP139 应仅在 tAVAL 时长之后重试另一个 IBI。
- 如果主机控制器启动一个读取事务,则所有位都应匹配。然而,此时主机正在等待来自 TMP139 的读取请求确认,而 TMP139 正在等待来自主机的 IBI 确认。结果,总线上将出现一个否定确认。在这种情况下,TMP139 应仅在 tAVAL 时长之后重试。但是,如果主机发出启动(或重复启动)并在经过 tAVAL 时长之前尝试读取事务,它应从 TMP139 获得确认,主机读取应在总线仲裁中胜出。
- 如上所述,在有多个器件同时启动 IBI 的情况下,具有最低器件地址的器件将在总线仲裁中胜出,当 TMP139 检测到在总线仲裁中失败时,应仅在 tAVAL 时长之后重试另一个 IBI。