« ノイジーマイノリティ | トップページ | 補償と雑感 »

2020年5月 1日 (金)

I2C

TLに、I2C使うときには、バスリピーターを使わないと
時々バスが止まる、との記述がある。

経験則からも、バスが止まるのはそうだな...

規格として、バスストレッチがあるのに、
そのタイムアウトが規格に設定されてない、
とか、構造的な問題な気がしている。

マイコンはWDTあるから(まだ)いいけど、
デバイス側にも個別にWDT欲しいなあ、
という気になる。


でもバスリピーターつけると回避できる
ってのは、どういう仕組みなんだろう?

回路見ると、イネーブルは固定だし
電気的にバスがノイズに強くなる、
って程度の意味なのか。
確率的に回避しやすくなる、ってことなのかな。

------

I2Cには、ずいぶんいてこまされた。

NXPには、I2Cの規格書があって、
https://www.nxp.com/docs/en/user-guide/UM10204.pdf
日本語もあるし
https://www.nxp.com/docs/ja/user-guide/UM10204.pdf

大した量じゃないので一度読んでみると
いいのだけれど、これの3.1.16節。

可能性は低いが、クロックラインがLで止まった場合は
ハードウエアリセットかパワーオンリセットを
すべき、と明記されちゃってる。

まあ、公式にこう書いてあるので、
逆にやりやすくはあるんだけど。

絶対止まってほしくない!ってものに
使わない、公式な理由にできるし。
それでも使うときは、ソフトウエアから
パワーオンリセットできる構造が必須、
という話にできる。

| |

« ノイジーマイノリティ | トップページ | 補償と雑感 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« ノイジーマイノリティ | トップページ | 補償と雑感 »