I2C(アイツーシー)
英語表記: I2C (Inter-Integrated Circuit)
概要
I2C(アイツーシー)は、フィリップス社(現NXPセミコンダクターズ)によって開発された、近距離の集積回路(IC)間通信に特化したシリアル通信プロトコルです。これは、コンピュータのバス構造において、データや制御信号を複数の線で同時に送る「パラレル通信」とは対照的に、わずか2本の信号線(SCLとSDA)を用いて情報を順番に送る「シリアル通信」の代表例として位置づけられます。特に、マイクロコントローラと低速な周辺機器(センサーやメモリなど)を効率的かつ省スペースで接続するために設計されており、現代の組み込みシステムにおけるコンピュータの構成要素を接続する上で欠かせない技術となっています。
詳細解説
I2Cは、バス構造の分類の中でも特に省配線性と柔軟性に優れており、その構造がシリアル vs パラレルの議論においてシリアル側の大きな利点を体現しています。
目的と背景:なぜシリアル通信が必要か
一般的なコンピュータのバス構造(データバス、アドレスバス、制御バス)は、高速なデータ転送のために多くの信号線を使用するパラレル方式を採用することが多いです。しかし、基板上の小さな領域で多数の低速な周辺機器を接続する場合、配線数の多さはコストや複雑さを増大させます。I2Cは、この課題を解決するために、アドレス情報、データ、および制御信号のすべてをたった2本の信号線に多重化して搭載するシリアル方式を採用しました。これにより、基板設計が大幅に簡素化され、製品の小型化に貢献しています。
I2Cの主要な構成要素と動作原理
I2Cがバス構造として機能するために必要な信号線は以下の2つだけです。
- SCL (Serial Clock Line):通信のタイミングを同期させるためのクロック信号線です。シリアル通信では、データを送るタイミングを送信側と受信側で厳密に合わせる必要があります。SCLは、このタイミングをマスターデバイスが生成し、すべての接続デバイスに共有することで、同期を実現します。
- SDA (Serial Data Line):実際にデータやアドレス情報をやり取りするための信号線です。
I2Cの通信は、「マスター」と「スレーブ」という役割分担に基づいています。
- マスターデバイス:通信を開始し、クロック信号(SCL)を生成し、どのスレーブと通信するか(アドレス)を指定する、いわば司令塔の役割を果たします。
- スレーブデバイス:マスターからの要求に応答し、データの送受信を行うデバイスです。
この構造のおかげで、1つのマスターが複数のスレーブデバイスを制御できます。さらに、I2Cは「マルチマスター」にも対応しており、複数のマスターデバイスが同じバスを共有し、必要に応じてバスの制御権を譲り合う柔軟な設計も可能です。これは、複雑なコンピュータの構成要素を効率的に連携させる上で非常に重要な特徴だと言えます。
データの流れ:バスの多重利用
I2Cの通信プロセスは、バス構造におけるアドレスバス、データバス、制御バスの機能を凝縮して実行します。
- スタートコンディション: マスターが通信を開始する合図を送ります(制御バスの役割)。
- アドレス送信: マスターは通信したいスレーブの固有のアドレスをSDA線に乗せて送信します(アドレスバスの役割)。
- ACK応答: アドレスを受け取ったスレーブは、認識したことを示す応答(ACK:アクノリッジ)を返します。
- データ転送: 実際に必要なデータ(センサー値、設定情報など)をやり取りします(データバスの役割)。
- ストップコンディション: マスターが通信終了を宣言します(制御バスの役割)。
このように、I2Cはたった2本の線で、複雑なバス構造の全機能を時間的に多重化して実現しているのです。これはシリアル通信の省資源性を最大限に活かした素晴らしい設計だと感じますね。
具体例・活用シーン
I2Cは、そのシンプルさと効率性から、特に組み込みシステムやIoTデバイスのコンピュータの構成要素の接続に広く利用されています。
具体的な応用例
- センサー接続: スマートフォンやウェアラブルデバイス内部の加速度センサー、ジャイロセンサー、温度センサーなどは、しばしばI2Cを通じてメインのマイクロコントローラに接続されています。
- メモリ接続: 設定情報などを保持するための小型のEEPROM(電気的に消去・書き換え可能な読み出し専用メモリ)へのアクセスに利用されます。
- 開発ボード: ArduinoやRaspberry Piなどのマイコンボードでは、拡張モジュール(LCDディスプレイや各種センサー)との接続にI2Cが標準的に使われており、少ない配線で多くの機能を試すことができます。
アナロジー:2本の糸電話で多人数の会議を行う
I2Cの仕組みを理解するために、シリアル vs パラレルの概念と合わせて、非常にシンプルなアナロジーを考えてみましょう。
一般的なパラレル通信は、「会議室で全員が同時に大声で話す」ようなものです。高速ですが、全員が聞くためには多くの耳が必要で、誰が誰に話しているのかを識別するための複雑なルール(配線)も必要になります。
一方、I2Cは「2本の糸電話を使った多人数の会議」に例えられます。
- SCL(クロック線)は、「会話の開始と終了の合図」や「話すテンポ」を決める共通のルール(制御バスの役割)です。
- SDA(データ線)は、実際に話す内容が乗せられる線です。
- マスターは議長です。議長はまず、誰に話しかけるか(アドレス)をSDA線に乗せて全体に伝えます。
- スレーブ(参加者)は、自分宛のアドレスが流れてきたら応答し、その後の会話(データ)を順番に聞いたり、話したりします。
参加者全員が共通の2本の糸電話(SCLとSDA)を使いますが、議長が「次はあなたに話しかけますよ」と明確に指定(アドレス指定)することで、少ない配線にもかかわらず、混乱なく正確に情報をやり取りできるのです。この効率的な仕組みこそが、I2Cがバス構造として広く採用される理由です。
資格試験向けチェックポイント
I2Cは、コンピュータの構成要素におけるバス構造、特にシリアル vs パラレルの文脈で頻出します。ITパスポート、基本情報技術者、応用情報技術者試験では、その特徴と他の通信方式との比較が問われることが多いです。
- シリアル通信の代表例: I2Cは、SPI、UARTなどとともにシリアル通信の代表格であることを必ず覚えておきましょう。パラレル通信(例:PCIeや古いIDEなど)と比較して、配線数が少なく、低速・近距離通信に適している点が重要です。
- 2線式であること: I2Cは「わずか2本の信号線(SCLとSDA)」で通信を行うという特徴が、そのまま選択肢として問われることがあります。SCL(クロック)とSDA(データ)の役割を明確に区別してください。
- マスター/スレーブ構造: 1つのマスターが複数のスレーブを制御する構造(マルチスレーブ)や、複数のマスターが存在できる構造(マルチマスター)に対応している点が出題されることがあります。
- 用途: 主に基板内のLSI間や、低速な周辺機器との接続に使用されるという特性を理解しておくと、高速な外部インターフェース(USB、Ethernetなど)との違いを答えやすくなります。
- バス構造の多重化: データ、アドレス、制御の各バスの機能が時間的に多重化されて2本の線に集約されている、という高度な理解は応用情報技術者試験などで役立ちます。
関連用語
- 情報不足
(注記: I2Cと対比されることが多いシリアル通信プロトコルとして、SPIやUARTがありますが、本記事では指定された要件に基づき、「情報不足」と記載させていただきます。読者の皆様には、これらのシリアル通信プロトコルについても併せて学習されることをお勧めします。)
総文字数: 約3,200文字