I2C - 回路間バス

I2Cバスは、組み込みの領域で非常によく使われています。その仕組みとRaspberry Piでの設定方法を例を挙げて説明します。
I2C特性
Inter-Integrated Circuit Busは、同期式シリアル通信バスである。1982年にフィリップスセミコンダクターズが発明を担当したが、このインターフェースはすぐに人気を博した。

よく使われる同義語はI2C、I2CまたはIICを使用します。このインタフェースは、コントローラ-ターゲット・アーキテクチャを利用し、コントローラはわずか2本のワイヤで最大112台のデバイスと通信することができます。
コントローラは、特定のターゲットのニーズに合わせてビットレートを調整することができます。従って、I2Cはセンサー、EEPROMデバイス、クロック、モータードライバなど、多くのデバイスと互換性があります。
配線
I2Cバスの配線は2本で済むので、これ以上ないくらい簡単です。コントローラのシリアルクロック(SCL)ピンをターゲットのシリアルクロックピンに接続し、同様にターゲットのシリアルデータ(SDA)ピンを接続します。あとは、I2Cソフトウェアがやってくれます。

I2Cデバイスに電源を供給する必要がある場合は、Raspberry Piの3V3、5V、GROUNDピンを使用することができます。
のようなデバイスもあります。 BME688ブレイクアウトボード はI2Cヘッダを持つので、接続に配線は不要です。
I2C通信
集積回路バスは、わずか2本の配線で128台の機器を接続することができます。これを可能にしたのは、通信原理の工夫です。
SDA と SCL は決してアクティブにハイに駆動されることはありません。デバイスがロジック 1 を送信したい場合は、ワイヤーをフローティングのままにします。ロジックゼロを送信する場合は、ワイヤーをグランドに引き出します。
コントローラが通信を開始する。ネットワーク上のどの機器もコントローラーとターゲットとして機能することができます。
下の図は、それぞれのビットを示しています。

通信を開始するために、コントローラはStartビットに続いて、ターゲットのI2Cアドレスと希望の動作モード(R - リードまたはW - ライト)を送信します。
I2C通信では、ターゲットは8ビット毎(1バイト毎)にACKビットを返さなければならない。アドレス空間は通常7ビットなので、128(0〜127)個のアドレスがあります。そのうち16個は予約されています。そのうち16個は予約されているので、112個がデバイスのアドレスになります。
ターゲットアドレスと動作モードは1バイトなので、ターゲットはACKビットを返さなければならない。次にコントローラは(8ビットの)レジスタアドレスを送り、ターゲットはそれを再度確認する。これ以降、リードとライトの通信が異なる。
書き込みの場合、コントローラはデータを8ビットブロック単位で送信するだけです。ターゲットは各ブロックを確認します。コントローラは、書き込みを終了すると、ストップビットを送信します。
読み出しの場合、コントローラはStartビットを再度送信し、その後にターゲットアドレスを送信します。ターゲットが確認し、8ビットブロックでのデータ送信を開始します。このとき、コントローラは各バイトを確認する必要があります。読み出しを停止するには、コントローラはNACKビットを送信し、最後にStopビットを送信します。
メリット・デメリットとアプリケーション
メリット
I2C Busの利点ははっきりしています。たった2本のワイヤーと2本のピンだけで128個のデバイスを接続することができるのです。これは実に強力です。さらに、スピードも自在です。ハードウェアのセットアップも非常に簡単です。SPIとは異なり、コントローラはターゲットがデータを正しく受信したかどうかを知ることができます。

デメリット
インターインテグレート回路バスは、プルアップ抵抗を使用するため、スペースと電力を必要とします。SPIに比べ、速度が遅い。2つのデバイスが同じI2Cアドレスを使用する場合、トラブルになる可能性がある。デバイスに直接格納されているアドレスです。デバイスによっては、デバイスの特定の場所にジャンパをはんだ付けすることで、2つの可能なアドレスから選択することができます。

アプリケーション
を検索すると センサー 当店では、アナログ以外のセンサーはほとんどI2Cインターフェースを使っていることにお気づきでしょう。組み込み分野では非常に一般的です。I2Cメモリのようなものがあります。マイクロコントローラが通信にこのバスを使うこともよくあります。それ以外にも、多くのDAC(Dイグジット Aナログ Cオンバーター)、ADC(Aナログ Dイグジット Cオンバーター)はインターフェースに対応しています。
Raspberry PiのI2C
私たちの ビデオ は、Raspberry Piに集積回路バスをセットアップする方法を示しています。
[...] また、I2Cについてもっと知りたい方は、こちらの記事をご覧ください。[...]
[...] I2Cについてもっと知りたいですか?こちらの記事をご覧ください。[...]
[...】I2C - 回路間バス 【...】I2C - 回路間バス。
[...】I2C(Inter-Integrated Circuit Bus):集積回路間バス。]
[...】I2C - 回路間バス 【...】I2C - 回路間バス。
[ナヴィーンが説明するように、ナノとTFTディスプレイの接続はシリアル・ペリフェラル・インターフェース(SPI)に基づいている。)一方、ジョイスティックとボタンは集積回路間バス(I2C)で接続されています。[...]