I2C(Inter Integrated Circuit)はシリアル通信を行うためのインターフェースで、「アイ・ツー・シー」「アイ・アイ・シー」「アイ・スクエア・シー」等と呼ばれています。
「IIC」と表記されることもあります。
I2C は SDA ピン、SCL ピンという 2 ピンを使ってデータを送受信します。
1対1でしか通信出来なかったUARTと異なり、I2C にはマスタ・スレーブ方式(※)で複数の機器と接続してデータをやりとり出来るという利点があります。
※ 近年「マスタ・スレーブ方式」という用語を違う用語で置き換えようという流れになっていて、I2Cの場合は MIPI Alliance という団体が「コントローラ・ターゲット方式」にしようと提案しているらしいです
またクロック信号で同期を取るので UART よりも高速にデータを送受信できます。
使用する信号線も少ないので配線も楽に出来ます。
一方、送受信を開始する前にデバイスのアドレス指定が必要だったり、ACK/NACKを使って応答確認をする必要があるのでプログラムは複雑になります。
さて I2C は以下の様に接続します。
SDA : シリアル・データ ・・・データを送受信する
SCL : シリアル・クロック・ ・・・クロック信号
※1 マスタ機器が送受信開始時にデバイスのアドレスを指定して通信対象の機器を選択する
※2 マスタ機器が送受信開始時に送信モード、受信モードを選択する(つまりSDA上でデータが流れる方向を選択)
※3 マスタ機器が SCL を使ってクロック信号を送って同期を取る