Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

一般的なプロトコル

I2C プロトコルは、複数のデバイス間の通信をサポートする必要があるため、シリアル通信プロトコルよりも複雑です。例を使って、その仕組みを見ていきましょう。

Controller -> Target

Controller が Target にデータを送信したい場合:

  1. Controller: START をブロードキャストする
  2. C: ターゲットアドレス(7 ビット)+ R/W(8 ビット目)ビットを WRITE に設定してブロードキャストする
  3. Target: ACK(確認応答)を返す
  4. C: 1 バイト送信する
  5. T: ACK を返す
  6. 手順 4 と 5 を 0 回以上繰り返す
  7. C: STOP をブロードキャストする OR(RESTART をブロードキャストして (2) に戻る)

ターゲットアドレスは 7 ビット長ではなく 10 ビット長であることもあります。それ以外は何も変わりません。

Controller <- Target

controller が target からデータを読み取りたい場合:

  1. C: START をブロードキャストする
  2. C: ターゲットアドレス(7 ビット)+ R/W(8 ビット目)ビットを READ に設定してブロードキャストする
  3. T: ACK を返す
  4. T: バイトを送信する
  5. C: ACK を返す
  6. 手順 4 と 5 を 0 回以上繰り返す
  7. C: STOP をブロードキャストする OR(RESTART をブロードキャストして (2) に戻る)

ターゲットアドレスは 7 ビット長ではなく 10 ビット長であることもあります。それ以外は何も変わりません。