0I2Cバスは、組み込みの領域で非常によく使われています。Piでの設定方法を例を挙げて説明します。Busは、同期式シリアル通信バスである。1982年にフィリップスセミコンダクターズが発明を担当したが、このインターフェースはすぐに人気を博した。I2C特性よく使われる同義語はI2C、I2CまたはIICを使用します。このインタフェースは、コントローラ-ターゲット・アーキテクチャを利用し、コントローラはわずか2本のワイヤで最大112台のデバイスと通信することができます。コントローラは、特定のターゲットのニーズに合わせてビットレートを調整することができます。従って、I2Cはセンサー、EEPROMデバイス、クロック、モータードライバなど、多くのデバイスと互換性があります。配線I2Cバスの配線は2本で済むので、これ以上ないくらい簡単です。コントローラのシリアルクロック(SCL)ピンをターゲットのシリアルクロックピンに接続し、同様にターゲットのシリアルデータ(SDA)ピンを接続します。あとは、I2Cソフトウェアがやってくれます。Piの3V3、5V、GROUNDピンを使用することができます。ようなデバイスもあります。I2Cヘッダを持つので、接続に配線は不要です。集積回路バスは、わずか2本の配線で128台の機器を接続することができます。これを可能にしたのは、通信原理の工夫です。アクティブにハイに駆動されることはありません。送信したい場合は、ワイヤーをフローティングのままにします。ロジックゼロを送信する場合は、ワイヤーをグランドに引き出します。コントローラが通信を開始する。ネットワーク上のどの機器もコントローラーとターゲットとして機能することができます。下の図は、それぞれのビットを示しています。ライト)を送信します。I2C通信では、ターゲットは8ビット毎(1バイト毎)にACKビットを返さなければならない。アドレス空間は通常7ビットなので、128(0〜127)個のアドレスがあります。そのうち16個は予約されています。そのうち16個は予約されているので、112個がデバイスのアドレスになります。ターゲットアドレスと動作モードは1バイトなので、ターゲットはACKビットを返さなければならない。次にコントローラは(8ビットの)レジスタアドレスを送り、ターゲットはそれを再度確認する。これ以降、リードとライトの通信が異なる。書き込みの場合、コントローラはデータを8ビットブロック単位で送信するだけです。ターゲットは各ブロックを確認します。コントローラは、書き込みを終了すると、ストップビットを送信します。読み出しの場合、コントローラはStartビットを再度送信し、その後にターゲットアドレスを送信します。ターゲットが確認し、8ビットブロックでのデータ送信を開始します。このとき、コントローラは各バイトを確認する必要があります。読み出しを停止するには、コントローラはNACKビットを送信し、最後にStopビットを送信します。Busの利点ははっきりしています。2本のワイヤーと2本のピンだけで128個のデバイスを接続することができるのです。