第36回 I2C通信の考え方(1)

今回からI2C通信手順の説明に入ります。

目次

SPI通信の特徴確認

I2C通信手順の説明に入る前に、SPI通信を振り返っておきましょう。

SPI通信を行うには、マスターとスレーブを以下のような信号線で接続しました。

Pic practice 36 spi topology

データ送受信のタイミング(=データ信号の読み取りタイミング)は、マスターのクロック信号(SCK)が司っています。マスターからスレーブにデータを送る場合はMOSI信号、スレーブからマスターにデータを送る場合はMISO信号により行います。また、マスターがどのスレーブと通信するかはチップセレクト信号(CSB)により通信相手のスレーブを選択します。

このように、SPI通信の接続形態は分かりやすいと思いますが、一方で以下のような特徴もあります。

まず、このような通信形態をとった場合、スレーブ数が増えるとCSB信号線がスレーブ数ぶん必要になります。例えばスレーブを5個接続する場合、CSB信号線は5本必要になり、結果としてマスター側のCSB制御ピンが5本必要になってしまいます。このようにスレーブの数が増えると、その分CSB信号線の数が増えるという特徴があります。

次にデータ信号線の使い方を見てみます。今回使用した温室度・気圧センサでは、PICマイコンでデータ取得する場合、以下の手順で行なっていました。

  1. PICマイコン(マスター)からセンサ(スレーブ)にアドレスを「MOSI信号線」で送信する(この間MISO信号線は使用しない)
  2. センサ(スレーブ)からPICマイコン(マスター)に、指定されたアドレスのデータを「MISO信号線」で返信する(この間MOSI信号線は使用しない)

このような通信手順では、MOSI信号線とMISO信号線を同時に使用することはありません。ということは、データ線は1本で送受信できるようにした方がいいのでは? という意見も出てきそうです。

このように、SPI通信は接続形態は簡単なものの、上にあげたような特徴もあるわけです。

SPI通信とI2C通信の比較

SPI通信の回路構成と通信手順を振り返ったところで、SPI通信と比較する形でI2C通信の特徴を確認します。

最初に実践編の回路図を確認します。I2C通信部分の接続は以下のようになっています。

Pic practice 36 i2c schematic

I2C通信は、SPI通信と同様にマスターとスレーブで通信を行います。実践編の回路の場合、マスターはPICマイコン、スレーブは温度センサと液晶モジュールです。

それでは最初に接続形態を確認しましょう。I2C通信では、SPI通信と異なり、2本の信号線を使用してマスターとスレーブを以下のように接続します(実践編の回路構成がこの通りになっているか確認してみてください)。

Pic practice 36 i2c topology

このように、I2C通信では「SCL」と「SDA」と呼ばれる2本の信号線のみで通信を行います。これら2本の信号線は以下のように使用されています。

  • SCL
    Serial Clockの略で、クロック信号として使用します。
  • SDA
    Serial Dataの略で、データ信号として使用します。

接続形態を確認したところで、SPI通信とI2C通信を比較してみましょう。

SPI通信と同じところ

I2C通信ではクロック信号とデータ信号の2本の信号線でデータを送りますが、これら2本の信号線の使い方はSPI通信と同じです。つまり、データ信号線(SDA)に送りたいデータ(0か1)をセットした後に、クロック信号(SCL)を変化させてデータを読むタイミングを知らせる、という使い方をします。

また、SPI通信と同様に、クロック信号線とデータ信号線にスレーブを複数接続することができます。

SPI通信と違うところ

データを送る方法はSPI通信と同じです、というところまではいいですが、、、、、すでにお気付きだとは思いますが、SPI通信手順を理解した上でI2C通信の構成を見てみるといろいろと疑問が出てきますよね。

まずはスレーブを選択するチップセレクト信号線がないのが気になります。

実践編の回路図では、マスター(PICマイコン)に対して、2個のスレーブ(温度センサと液晶モジュール)が接続されていますが、SPI通信の時のような通信相手を選択するチップセレクト信号線がありません。

SPI通信では、チップセレクト信号をそれぞれのスレーブに接続して、チップセレクト信号線で通信相手を選択していました。I2C通信の場合はチップセレクト信号線がありませんので、通信相手はどのように選択するのか???という疑問があります。

また、SPI通信では2本の信号線を使い、マスターからスレーブとスレーブからマスターの信号線を分けていました。2本の信号線に対して、スイッチと電球の回路を以下のように構成すれば双方向の通信ができます。

Pic practice 36 spi data

ところで、データ信号線が1本の場合、回路はどのようにすれば送受信ができるのか、という疑問が出てきます。

Pic practice 36 i2c data

また、I2Cのデータ信号線には謎の抵抗があります。なぜこのような抵抗が必要なのかも疑問です。

Pic practice 36 i2c resistor

そこで、次回の記事ではI2C通信のハードウェア構成と通信手順を説明することにより、これらの疑問を解き明かしていきます。

更新履歴

日付 内容
2018.5.26 新規投稿
通知の設定
通知タイミング
guest
0 コメント
本文中にフィードバック
全てのコメントを見る
目次