I2C

シリアル通信のプロトコルを見てきました。シリアル通信は広く利用されているプロトコルです。 なぜなら、シリアル通信は単純で、単純だからこそBluetoothやUSBのようなプロトコル上に実装することが容易であるためです。

しかし、この単純さは欠点でもあります。例えばデジタルセンサを読み込みようなより複雑なデータのやり取りでは、 センサベンダは別プロトコルの用意を要求します。

幸運(不幸)なことに、組込みの世界にはたくさんの通信プロトコルが存在します。 デジタルセンサで広く使われているものもあります。

使用しているF3ボードには、加速度計、磁力計、ジャイロスコープの3つのモーションセンサがあります。 加速度計と磁力計は1つのコンポーネントにパッケージされており、I2Cバスでアクセスできます。

I2Cは、Inter-Integrated Circuitを意味しており、同期シリアル通信プロトコルの1つです。 データをやり取りするために、データ線(SDA)とクロック線(SCL)の2つの線を使用します。 クロック線は通信を同期するために使用するので、これは同期プロトコルです。

このプロトコルは、マスタースレーブモデルを使います。ここで、マスターはスレーブデバイスとの通信を開始し駆動するデバイスです。 いくつかのデバイス(マスター、スレーブ共に)が同じバスに、同時に接続できます。 マスターデバイスは、まずバスにアドレスをブロードキャストすることで、特定のスレーブデバイスと通信できます。 このアドレスは、7ビットか10ビットの長さです。 一度マスターがスレーブと通信を開始すると、マスターが通信を停止するまで、他のデバイスはバスを使用できません。

クロック線は、データのやり取りの速度を決定します。通常、100 KHz(standard mode)か400 KHz (fast mode)の周波数で動作します。