I2C(あいすくえあどしー)

シリアルデータ線(SDA)とシリアルクロック線(SCL)の2本の信号線のみで、基板上のマイコンとセンサーなどの周辺デバイスを接続する同期式シリアル通信規格。正式名称はInter-Integrated Circuitであり、各デバイスに割り当てた固有のアドレスを指定することで、同一バス上に複数の機器を並列に接続して通信できる。

詳細解説

通信の開始時には、通信を主導する側から対象デバイスのアドレスと通信方向を示す計8ビットのデータが送信されます。一般的な7ビットアドレス方式では、上位7ビットが機器固有のアドレスを表し、最下位ビット(LSB)が0なら書き込み(Write)、1なら読み出し(Read)を意味します。つまり、バス上を流れる最初の1バイトは、7ビットのアドレスを1ビット左へずらし、空いた最下位ビットに方向を入れた値になります。

デバイスの内部レジスタからデータを読み出す手順では、まず書き込み指定(LSBが0)で対象機器と内部レジスタのアドレスを順に通知し、続けてリピーテッドスタート(再開始条件)を挟み、読み出し指定(LSBが1)で対象機器のアドレスを送り直してからデータを受信します。また、1つのバスに複数の機器をぶら下げて共用する構造上、マルチタスク環境で複数のタスクが別々のセンサーへ同時にアクセスすると信号が衝突するため、バス全体を共有資源として排他的に扱う制御が欠かせません。

関連する分野

組込み・IoT センサー・アクチュエーター・マイコン制御

用語集の一覧へ