I2C
先ほど、シリアル通信プロトコルを見ました。これは非常に広く使われているプロトコルです。とても シンプルであり、この単純さによって Bluetooth や USB のようなほかのプロトコルの上に実装しやすくなっているためです。
しかし、この単純さは欠点でもあります。デジタル センサーの読み取りのような、より複雑なデータ交換では、 センサーベンダーはその上に別のプロトコルを考案する必要があります。
私たちにとって(不)運なことに、組み込み分野にはほかにもたくさんの通信プロトコルがあります。その 一部はデジタルセンサーで広く使われています。
私たちが使用している F3 ボードには、加速度計、磁力計、 ジャイロスコープという 3 つのモーションセンサーが搭載されています。加速度計と磁力計は単一のコンポーネントに パッケージ化されており、I2C バス経由でアクセスできます。
I2C は Inter-Integrated Circuit の略で、同期式 シリアル 通信プロトコルです。データのやり取りには 2 本の線を使用します。データ線(SDA)とクロック線(SCL)です。通信の同期に クロック線が使われるため、これは 同期式 プロトコルです。
このプロトコルは マスター スレーブ モデルを使用します。ここでマスターとは、 スレーブデバイスとの通信を開始し、その通信を主導するデバイスです。マスターとスレーブの両方を含む複数のデバイスを、 同じバスに同時に接続できます。マスターデバイスは、まずその アドレス をバス上にブロードキャストすることで、 特定のスレーブデバイスと通信できます。このアドレスは 7 ビットまたは 10 ビット長です。 マスターがスレーブとの通信を開始すると、マスターがその通信を停止するまで、 ほかのどのデバイスもそのバスを使用できません。
クロック線は、データをどれだけ速くやり取りできるかを決定し、通常は 100 KHz(標準モード)または 400 KHz(高速モード)の周波数で動作します。