オランダのPhilips社が開発したIC間用双方向シリアルバスの規格。I2Cバスとも書く。
同規格に基づくIC同士なら、僅か2本の配線で、複数の周辺IC間の相互データ転送や制御ができる。対応するICにはシリアルEEPROMや、A/D、D/Aなどがある。
信号線は、シリアルクロック線(SCL)と、シリアルデータ線(SDA)がある。
この2線だけで、制御側(マスタ)と、IC(スレーブ)の通信を行なう。
SCLは、同期を取るための信号線である。通常はマスタ→スレーブの一方向である。
SCLがローの期間にシリアルデータ(SDA)を変更し、SCLをハイで保持することでその通信を行なう。
SCLに同期し、データの転送に用いる信号線である。マスタ、スレーブ、どちらからも送信されうる。
通信のACK信号もSDAを通じて送信されるため、転送方向は通信中に随時変化する。
データは、スタートコンディションに始まり、実際のデータ送受信が続き、ストップコンディションで終わる。
マスタが通信を開始する前に、バスの使用権を獲得するため、スタートコンディションを発行する。
これは、SCLがハイの状態で、SDAをハイ→ローとすることで行なう。
次いで、データの送受信が行なわれる。
これがどのような形式であるかはICによって異なるが、一例では、デバイスアドレス、リード/ライトの区別、デバイス内のメモリアドレス、実際のデータ、といった形式になる。
SCLをロー→ハイとすると、スレーブはSDAに1ビットのデータを送信するので、マスタはこれを読み取る。
SCLをローに戻し、再度ロー→ハイとすれば、その次のビットが送信される。これを繰り返す。
SCLがローの状態でSDAに1ビットのデータを設定し、SCLをロー→ハイとすると、スレーブは1ビットのデータを受信する。
SCLをローに戻し、SDAに1ビットのデータを設定して再度ロー→ハイとすれば、その次のビットがスレーブに送信される。これを繰り返す。
データの転送を終えたら、バスを解放するため、ストップコンディションを発行する。
これは、SCLがローの状態でSDAをローにし、SCLをハイ、SDAをハイ、とすることで行なう。