I2C信号を見る はなし
I2C信号を見る はなし とは
I2C 信号は CLOCK に同期した DATA 線で信号を送る近距離通信信号で、通常 100KHz程度のクロック、高速では 400KHzで通信しているが、結構タイミングとか ACK応答とか微妙な点が多く、特に DATA 線がオープンコレクタという双方向のモードで動作するので、イメージをつかむのは難しく、やっぱり実際の信号を見て頂くのは一番と思う。
動画のオシロスコープ表示で 赤色が CLOCK 黄色が DATA ラインです。
始めに赤が High のうちに 黄色が Lowになりますが、これがスタートコンディション です。
その後 クロックが 8回 High / Low を繰り返して、この High に立ち上がるときの DATA線のレベルを見ている訳です。
9個目のクロックは ACK を確認するためで、このとき 送信側は ポートをOpen にしてプルアップ状態にしておき、スレーブ側が Lowにするのを待っています( ACK 待ち)
素早く応答するので、スレーブ側は 8個目のクロックの立ち下がりですぐに LOW にして ACK を応答します。
Youtube ページなどに行って、拡大して見るとこの8個目のクロックの立ち下がりの後から次のクロックまでのDATAラインが、少し前後のレベルよりも下がっている(電圧が低くなる)のが判るかと思います。これはスレーブ側でのACKのLOWレベルへの引き込み能力が高いためで、デバイスによっては省電力のデバイスなどここがあまり下がらない(若干レベルが上がる)場合もあります。
9個目の CLOCKが Low になれば、再びスレーブ側は Low を止めて、入力状態になります。
動画の説明:通常のアクセス 始めの 9クロック目が Low の ACKが帰ってきて 次のデーターも送れている。
始めの8ビットはアドレス(7ビット)と送受ビット(1ビット)からなっています
この例では、アドレス 0x21 ( 7ビット)からデーターを読み込むので、送受ビットは(1-読込)を指定しています。
これを8ビットで送るので、アドレスは上位にシフトして 0x42 + 1(読込ビット)で、 0x43 というデーターを送っています。
動画の説明:応答の無い場合 始めの 9クロック目が High なので ACKが無い
この場合は、ACK応答が無いためプログラムで指定回数 応答が来るまでリトライしています。それで、同じ波形が繰り返されています
| 固定リンク
「DIGITAL」カテゴリの記事
- 謹賀新年 2024(2024.01.03)
- I2C信号を見る はなし(2022.09.13)
- TTL レベルのはなし ふたたび(2022.02.13)
- 2022 新年あけましておめでとうございます。(2022.01.04)
- 12Bit DAコンバーターのはなし(2016.08.12)
コメント