i.MX6のI2Cインターフェイスは、バスの衝突検知は可能です。
Arbitration procedureでサポートされており、バスの衝突を検知するとバスのArbitrationがLostします。
Arbitration lost は、I2C Status Register (I2Cx_I2SR)のIAL(Arbitration lost) fieldにて確認することが出来ます。
また、I2C Control Register (I2Cx_I2CR) のIIEN(I2C interrupt enable)をEnableにすることでArbitration lostで割り込みが発生します。
このArbitration procedure に関しては、i2c-imx.cにてハンドリングされています。
詳細に関しては、下記の箇所を参照してください。
Reference Manual:IMX6SDLRM Rev. 5, 05/2020
- 36.4.2 Arbitration procedure (P.1980)
- 36.5.7 Arbitration lost (P.1985-)
- 36.7.3 I2C Control Register (I2Cx_I2CR) (P.1995-)
- 36.7.4 I2C Status Register (I2Cx_I2SR) (P.1996-)