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 プロトコルは、複数のデバイス間の通信をサポートしなければならないため、シリアル通信プロトコルよりも複雑です。例を使って、どのように動作するのか見ていきましょう。

マスター -> スレーブ

マスターがスレーブにデータを送信したい場合:

  1. マスター: START をブロードキャストする
  2. M: スレーブアドレス(7 ビット)+ WRITE に設定された R/W(8 番目)ビットをブロードキャストする
  3. スレーブ: ACK(確認応答)を返す
  4. M: 1 バイト送信する
  5. S: ACK を返す
  6. 手順 4 と 5 を 0 回以上繰り返す
  7. M: STOP をブロードキャストする、または(RESTART をブロードキャストして (2) に戻る)

スレーブアドレスは 7 ビット長ではなく 10 ビット長であってもかまいません。それ以外は 変わりません。

マスター <- スレーブ

マスターがスレーブからデータを読み取りたい場合:

  1. M: START をブロードキャストする
  2. M: スレーブアドレス(7 ビット)+ READ に設定された R/W(8 番目)ビットをブロードキャストする
  3. S: ACK で応答する
  4. S: 1 バイト送信する
  5. M: ACK で応答する
  6. 手順 4 と 5 を 0 回以上繰り返す
  7. M: STOP をブロードキャストする、または(RESTART をブロードキャストして (2) に戻る)

スレーブアドレスは 7 ビット長ではなく 10 ビット長であってもかまいません。それ以外は 変わりません。