Cの特徴

どのような考え方で構成されているか

通信プロトコル

バスフリーフェーズ

バススタートフェーズ

アドレスフェーズ

アクノロジビット

データバイトの切れ目

データフェーズ

バス終了フェーズ

バスの競合調停方法
 

 I2Cインターフェースってなに?

についてはPICのことを知っている方なら必ず目にしたことでしょう。 提唱はフィリップスです。 マイクロチップ社はシリアルROM等にも使用しています。 マイクロワイアーとも呼ばれている様ですが正確にはです。 いったいこれで何ができるのでしょうか? 答えは、半二重でマルチノード指定のシリアル通信ができます。

 の特徴

  • 高速100KHz(400KHz)シリアル通信仕様です。
  • マルチノードワイアードOR接続です。
  • 信号線は3本と少ない。
  • 半二重双方向通信ができます。
  • マルチノードにノード指定で通信ができます。
  • マルチマスターが出来ます。

 フィリップス社は自社のビデオチップ等の制御に使用しています。 ハードの構成から見てオンボード内のインテリジェントモジュールを相互接続することが主な目的でしょう。 仕様書にはマックのADBやUSBのような位置付けをしていますが、現在USB等が普及している時代にはちょっと苦しい様に感じられます。 とは言え、簡単な考え方で上記特徴が出るのですからとても良い方法と感じました。

 ロボット製作では各PICを接続する信号として使用してみました。 ただし今回私が使用している16F84はこのポートをハード的に持っていません。 そこでプログラムで強引に疑似を行っています。

 どのような考え方で構成されているか

  • 信号はデータラインとクロックラインの2本です。
  • 各ノードはそれぞれ2本の信号をオープンコレクタでワイアードORで接続します。
  • 両端を5Vにプルアップしてあります。
  • 各ノードは信号を出す時は’L’を出すだけで’H’は終端で実現されます
  • データはクロックの立ち上がりでサンプルされます。
  • マスターが送信する時はデータとクロックを出します。
  • スレーブからデータを受ける時はマスターがクロックを出します。
  • クロックの’H’区間でデータを変化させてスタート、ストップをあらわします。
  • 通常データの変化はクロックが’L’の時に限ります。
  • 1ワード9ビット構成で8ビットデータを送ると必ず1ビットACKを受け取ります。
  • マスターどうしの競合は’L’を出した方が勝ちとする

 以上の基本が理解できれば十分です。 難しいことはあまり無くマルチマスターの半二重通信ラインが確立するわけです。