I2C
I2C とは 2 線式の同期式シリアル通信インタフェースです。「アイ・スクエア・シー」や「アイ・ ツー・シー」と読みます。I2C では SDA(シリアルデータ)と SCL(シリアルクロック)の 2 本の線で通信を行います。
https://scrapbox.io/files/6735a4df0cf023a6f809eba9.png
上図のように、I2C の SDA、SCL は複数のデバイス間で共有され、これを「I2C バス」と言います。I2C ではマスターとスレーブの間で通信が行われます。常にマスター側からスレーブ側に要求が行われ、スレーブ側からマスター側へ要求を行うことはできません。
CHIRIMENでいうとシングルボードコンピュータがマスターとなり、ここに接続されるセンサーやアクチュエータデバイスなどがスレーブとして想定されます。スレーブデバイスの一例としてこちらに紹介されているI2Cデバイスをご覧ください。
マスターは、スレーブが持つ「SlaveAddress (スレーブアドレス)」を指定して、特定のスレーブとの通信を行います。このため、同じ I2C バス上に同じ SlaveAddress のスレーブを繋ぐことはできません。 I2Cデバイスは小型のICチップデバイスとなっており、デバイスによってはSlaveAddressは製品ごとに固定されています。
https://scrapbox.io/files/6735a4c7b6f51019267b0486.png
まとめ
I2C バスを介して複数のデバイスが繋がる
I2C デバイスにはマスターとスレーブがある
I2C ではマスターからスレーブに対して通信要求が行われる
I2C スレーブは SlaveAddress を持つ
同じ I2C バスに同じ SlaveAddress のデバイスは繋げない