I2C(Inter-Integrated Circuit)は、二線式インターフェースを使用して複数のデバイス間で通信を可能にする、広く使用されているシリアル通信プロトコルです。これは、低速の周辺機器をマザーボード、組み込みシステム、またはマイクロコントローラーに接続するのによく使われます。
I2Cはマスター/スレーブアーキテクチャを採用しており、1つのデバイスがマスターとして動作し通信を開始し、他のデバイスがスレーブとしてマスターの要求に応答します。このプロトコルはマルチマスター構成をサポートしており、複数のデバイスが同じバスに接続されて相互に通信することが可能です。
I2Cバスの2本の重要な線は次の通りです:
I2C通信は異なる速度で行うことが可能で、一般的にはI2Cバス速度と呼ばれます。最も一般的なバス速度は標準モード(最大100 kbit/s)、高速モード(最大400 kbit/s)、および高速度モード(最大3.4 Mbit/s)です。
I2Cプロトコルは、マスターとスレーブデバイス間の通信を確立するために開始・停止メカニズムを使用します。開始条件はデータ転送の始まりを示し、停止条件は終了を示します。通信プロセスは次の手順で行われます:
開始条件: マスターデバイスは開始条件を送信して通信を開始します。SCL線を高くする間にSDA線を低く引きます。
アドレッシング: 開始条件の後、マスターは通信したいスレーブデバイスの7ビットアドレスを、読み取りまたは書き込みビットと共に送信します。読み取りビットはマスターがスレーブからデータを読み取ることを示し、書き込みビットはマスターがスレーブにデータを書き込むことを示します。バス上の各スレーブデバイスには固有のアドレスがあります。
確認応答: 指定されたアドレスを持つスレーブがアドレスビットを受信すると、確認応答(ACK)ビットで応答します。ACKはスレーブデバイスによってSDA線がプルダウンされることです。
データ転送: アドレッシングプロセスの後、マスターとスレーブは互いにデータを転送できます。データは8ビットセグメントで送信され、各セグメントの後に受信デバイスからのACKが続きます。このプロセスはマスターが通信の停止を決定するまで続きます。
停止条件: マスターデバイスはSCL線を高に保ちながらSDA線を高く引くことで停止条件を生成します。停止条件はスレーブに対して通信が終了したことを通知します。
データ転送中、SDA線が変化するのはSCL線が低のときのみということを留意することが重要です。これはマスターとスレーブデバイス間の同期された通信を保証します。
I2Cは、集積回路間での通信に広く使用されています。I2Cの一般的な用途には次のようなものがあります:
I2Cは、温度センサー、湿度センサー、加速度計など、多様なセンサーと通信するためによく使用されます。これらのセンサーはそれぞれのパラメーターに関するデータを提供し、接続されたデバイスが受信した情報に基づいて判断を下せるようにします。
LCDやOLEDディスプレイなど、多くのディスプレイモジュールはI2Cを使用してインターフェースできます。I2Cプロトコルは、ディスプレイモジュールと制御デバイス間の簡単な通信を可能にし、さまざまなシステムへのディスプレイの統合を簡素化します。
I2Cは、電気的に消去可能でプログラム可能な読み取り専用メモリ(EEPROM)チップのプログラミングや読み取りによく使用されます。EEPROMは電源が切れてもデータを保持できる不揮発性メモリデバイスです。I2Cプロトコルは、制御デバイスとEEPROMとの間の効率的なデータ転送を容易にします。
I2Cは、各種デバイスにおける正確な時間管理機能を提供するために、リアルタイムクロックで使用されます。これらのクロックは正確な時間と日付情報を維持でき、データロギング、スケジューリング、時間敏感な操作などのアプリケーションで一般的に使用されます。
I2C(Inter-Integrated Circuit)は、二線式インターフェースを使用してデバイスが相互に通信することを可能にする、広く使用されているシリアル通信プロトコルです。単純なアーキテクチャを有し、マルチマスター構成をサポートすることにより、複数のデバイスを単一バスに接続するための柔軟性を提供します。I2Cは、センサーインターフェース、ディスプレイモジュール、EEPROMプログラミング、リアルタイムクロックなどのアプリケーションで一般的に使用されます。I2Cには限界はありますが、さまざまな電子システムにおいて低速通信のための一般的な選択肢であり続けています。