I2C(アイツーシー)とは | 意味や読み方など丁寧でわかりやすい用語解説

I2C(アイツーシー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

アイ・スクエア・シー (アイエスシー)

英語表記

I2C (アイツーシー)

用語解説

I2C(アイ・スクエア・シー、またはアイ・ツー・シー)は、Inter-Integrated Circuitの略称であり、組込みシステム内部で複数のIC(集積回路)チップ間を接続するためのシリアル通信規格の一つである。オランダのフィリップス社(現NXPセミコンダクターズ)によって開発された。主に、同一基板上に実装されたCPUやマイクロコントローラと、センサー、メモリ、ディスプレイ制御ICといった周辺デバイスとの間の近距離かつ低速な通信に用いられる。システムエンジニア、特に組込みシステムやIoTデバイスの開発に携わる者にとって、理解しておくべき基本的な通信方式である。その最大の特徴は、SCL(Serial Clock)とSDA(Serial Data)というわずか2本の信号線で双方向通信を実現できる点にあり、これにより配線数を大幅に削減し、基板設計の簡素化やコストダウン、省スペース化に貢献する。

I2C通信の物理的な接続は、クロック信号を伝送するSCL線と、データを伝送するSDA線の2本で行われる。これらに加えて、電源(VCC)とグラウンド(GND)の配線が必要となる。SCLとSDAの信号線は「オープンドレイン」または「オープンコレクタ」と呼ばれる方式で駆動され、通常はプルアップ抵抗によって電源電圧に接続されている。この方式により、複数のデバイスがバスを共有していても、信号の衝突による回路の破損を防ぐことができる。通信が行われていないアイドル状態では、プルアップ抵抗によって両方の信号線がハイレベル(高電圧状態)に保たれる。

I2Cバス上のデバイスは、「マスター」と「スレーブ」という役割に分けられる。マスターは通信の開始と終了を制御し、クロック信号(SCL)を生成するデバイスであり、通常はCPUやマイクロコントローラがこの役割を担う。一方、スレーブはマスターからの指示に従って動作するデバイスであり、センサーやメモリなどがこれに該当する。一つのI2Cバスには複数のスレーブデバイスを接続できるが、マスターは通常一つである(マルチマスター構成も規格上は存在する)。マスターが通信を開始する際、まず通信相手となるスレーブを特定する必要がある。この識別のために、各スレーブデバイスには固有の7ビットまたは10ビットのアドレスが割り当てられている。マスターは通信を開始するにあたり、まず「STARTコンディション」と呼ばれる特殊な信号をバス上に送出し、その後、通信したいスレーブのアドレスを送信する。アドレスを受け取った全てのスレーブは自身のアドレスと照合し、一致したデバイスのみが以降の通信に応答する。

通信の基本手順は次の通りである。まず、マスターがSTARTコンディションを発行する。これは、SCLがハイレベルの状態でSDAをハイレベルからローレベルに変化させることで生成される。次に、マスターは7ビットのスレーブアドレスと、それに続く1ビットのRead/Writeビット(読み出しか書き込みかを示す)を送信する。指定されたアドレスを持つスレーブは、このアドレスを受信すると、正しく受信できたことを示すために「ACK(Acknowledge)」信号を返す。ACKは、スレーブがSDAをローレベルにすることでマスターに伝えられる。もし、指定されたアドレスのスレーブが存在しない、または応答できない状態にある場合は、SDAがハイレベルのままとなり、これは「NACK(Not Acknowledge)」として解釈される。アドレス指定とACKの確認が完了すると、データの送受信が開始される。データは1バイト(8ビット)単位で、MSB(最上位ビット)から順にSCLのクロックに同期してSDA線上を転送される。1バイトのデータ転送が完了するごとに、受信側(書き込み時はスレーブ、読み出し時はマスター)はACKまたはNACKを送信側に返す。このACK/NACKの応答により、通信の信頼性が確保される。一連のデータ転送が完了すると、マスターは「STOPコンディション」を発行して通信を終了する。STOPコンディションは、SCLがハイレベルの状態でSDAをローレベルからハイレベルに変化させることで生成され、これによりバスは再びアイドル状態に戻る。

I2Cにはいくつかの通信速度モードが定義されている。最も基本的な「スタンダードモード」では最大100kbps、「ファストモード」では最大400kbps、「ハイスピードモード」では最大3.4Mbpsの速度で通信が可能である。用途や接続されるデバイスの仕様に応じて適切な速度が選択されるが、一般的には数百kbps程度の速度で利用されることが多い。

I2Cの利点は、配線が少なく済むことによる設計の容易さとコスト削減、そして一つのバスに多数のデバイスを接続できる拡張性の高さにある。プロトコルも比較的単純であるため、ソフトウェアによる実装も容易である。しかし、欠点も存在する。通信速度がSPIなどの他のシリアル通信規格に比べて遅いため、高速なデータ転送を要する用途には不向きである。また、通信距離が短く、通常は同一基板内での利用に限られる。バスの配線長や接続デバイス数が増えると、バスの浮遊容量が増加し、信号波形が鈍るため、安定した通信が困難になる場合がある。さらに、各スレーブは固有のアドレスを持つ必要があるため、同じ種類のデバイスを多数接続したい場合にアドレスが競合するという問題が生じることもある。これらの特性を理解し、システムの要件に合わせて適切に採用することが重要である。