I2C 支持 SDA 冲突检测和仲裁,可以保证在多个主机企图控制 I2C 总线时,I2C 总线上的数据不被破坏。每个主机发送数据时,都会同时比较总线上的数据与自己发送的数据是否一致,不一致则认为检测到总线冲突,会退出发送竞争,即丢失仲裁。丢失仲裁的主机会立即切换到未被寻址的从机状态,以确保自身能被仲裁成功的主机寻址到。丢失仲裁的主机会继续输出 SCL 串行时钟,直到当前字节传输完成。SDA 仲裁一般发生在主机发送 SLA+W/R 数据阶段,如果两个主机同时向一个从机发送数据,即两个主机发送的从机地址相同,则仲裁会在第二个字节持续。
|