I2C

(2014.5.8 作成)

I2Cはフィリップス(現NXP)社によるチップ間通信の規格です(Wikipedia)。SPIと並んでいまさらここで詳しく説明するまでもないほどに有名な規格です。

 管理人なりに特徴を挙げると

  • SDA(Data), SCL(Clock)の2本だけで通信が出来るので配線が楽。
  • 1つのマスターに対して複数のスレーブデバイスを接続できる。
  • スレーブは選択ピンではなくアドレス指定なので複数デバイスを接続しても物理的な負担が少ない。
  • 通信速度は早いほうではない。
  • 5V (Arduino)と3V(STM32)系が混在した場合レベル変換が別途必要。

です。

 I2Cの規格にもいくつか複数のモードがありすべてに対応する汎用なクラスライブラリを作ろうとすると複雑になりすぎて逆に使いにくくなってしまいます。そこで以下の機能に絞ることで使い勝手のよいクラスになることを期待して作成しています。

  • マスターモードのみ。
  • スレーブデバイスのアドレスは7bitモードのみ
  • 速度は100KHzまたは400kHzのみ。(Arduino版は100kHzのみ)

I2Cクラスを含むライブラリはこちらからダウンロードできます。