11.5 I2C
I2Cの概要
I2C は、2線式の同期式シリアル通信インタフェースです。 「アイ・スクエア・シー」または「アイ・ツー・シー」と読みます。 通信に使うのは、SDA(シリアルデータ)とSCL(シリアルクロック)の2本の線だけです。
上の図のように、SDA、SCLの2本は複数のデバイスで共有されており、これを「I2Cバス」と呼びます。 同じバスにいるのは、マスターとスレーブです。 通信を持ちかけられるのはマスター側だけで、スレーブの側からマスターへ要求を送ることはできません。
本チュートリアルの範囲でいえば、マスターはCHIRIMEN環境を動かすボードコンピュータであり、そこに接続するセンサーやアクチュエータがスレーブにあたります。 実際に使えるI2Cデバイスの一例として、こちらに紹介されているものをご覧ください。
1本のバスに複数のスレーブがぶら下がっていて、マスターはどうやって相手を選んでいるのでしょうか。 鍵になるのが、スレーブごとに持つ「SlaveAddress(スレーブアドレス)」です。 マスターは通信のたびにこのアドレスを指定するため、同じI2Cバス上に同じSlaveAddressのスレーブを複数つなぐことはできません。 I2Cデバイスの実体は小型のICチップであり、製品によってはSlaveAddressがあらかじめ固定されています。
デバイス同士が同一基板上にない場合は、SDA、SCLの2本に電源とGNDを加えた、合計4本のケーブルで接続するのが一般的です。 電源電圧は、接続するデバイスの仕様に合わせる必要があります。