• 文字サイズ変更
  • S
  • M
  • L
  • No : 16616
  • 公開日時 : 2024/10/15 10:52
  • 印刷

【NXP:i.MX】 i.MX6のI2Cのバス衝突検知について

i.MX6のI2Cをマスターとして使用していますが、I2Cバスに接続されているデバイスがmulti-masterになっており、
稀にマスターとなってメッセージを送信し、バスが衝突する可能性があります。
i.MX6のI2Cにはバス衝突を検知する仕組みはありますか。
カテゴリー : 

回答

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-)

アンケート:ご意見をお聞かせください

ご意見・ご感想をお寄せください お問い合わせを入力されましてもご返信はいたしかねます