トップページ > dsPIC入門 > dsPICでI2C(1)

I2Cとは?

I2Cの基礎知識

I2Cは“Inter Integrated Circuit”(インター・インテグレイティド・サーキット:集積回路間通信)の略で、 名前の通りICとICの間で通信をする際に用いられる同期式シリアル通信です。単一のIC間ではなく、ある程度の規模の 基板同士を結ぶのにも利用されています。(マイコン基板と何らかのモジュール・・・など)

オフィシャルの表記は“I2C”ですが、ここでは簡単なので“I2C”と表記することにします。 また、正しい発音は“I squared C”(アイ・スクエアド・シー)らしいですが、“アイ・ツー・シー”と呼ばれることが あるそうです。私もよく「アイツーシーが・・・」と言ってしまいます(汗)

I2C通信はシリアル通信なので少ないピン数で接続することができます。しかも、データ線が送受信兼用で1本しかありません。 つまりI2Cの構成は“データ線+クロック線”の2本だけとなります。I2Cはこの2本の信号線に複数のデバイスを どんどん並列に接続していくことが可能なので、回路を組む際のハードウェアは非常に単純になります。

dsPICには、このI2C通信の少し面倒な信号処理をハードウェアで自動的にやってくれるモジュールが内臓されています。 これは、複数のdsPIC間でデータをやり取りするネットワークを組みたい時に便利そうだ!ということで、試しに使って みることにします。

I2Cの回路構成:1マスター、1スレーブの場合

まずは基本ということで、1対1の通信を例にとります。
シリアル通信についての項で触れましたが、同期式シリアル通信は基準となるクロックパルス に合わせてデータ線へ信号を出力することになります。このクロックパルスを送信する側のことを「スレーブ」、 送られてきたクロックパルスに従って動作する側のことを「スレーブ」といいます。 マスターがクロックを止めてしまえば通信は途絶えてしまいます。また、I2C通信ではデータを送信するのは必ず マスター側なので、SPI通信と比べてマスター・スレーブの区別がはっきり効いている 気がします。
(マスターとスレーブは“主人と奴隷”という訳語になりますが、回路系の用語とはいってもスレーブって どうなのかなぁ・・・と個人的に思っています 汗)

もうひとつ重要なポイントですが、I2Cのデータバスは外付け抵抗でプルアップする必要があります。 これは、様々なデバイスに対応するためにI2C用のピンにはオープン・ドレイン端子となっているからです。 プルアップ抵抗には、通常3[kΩ]〜10[kΩ]を使います。

I2Cの回路構成:1マスター、複数スレーブの場合

I2Cバス上に複数のスレーブを接続することができます。I2Cの仕様では、どんな相手に対してもデータ送受信前に必ず 相手アドレスを送信して、スレーブを1つだけ指定ことになっています。(後述)なので、回路構成は何も考えずに I2Cバス上へどんどんスレーブ側のデバイスを追加していくことができます。

I2Cの回路構成:複数マスター、複数スレーブの場合

I2Cでは、I2Cバス上に複数のマスターを置くこともできます。これを“マルチマスター”と呼んだりしますが、 このマルチマスターが可能な点がSPIとの大きな違いです。 I2Cの通信仕様で、マスター同士がかち合った場合でも対処することができます。




戻る   次へ