1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

組み込み基礎 I2C

Posted at

I2C(Inter-Integrated Circuit)とは

I2C(Inter-Integrated Circuit)とは、フィリップス社が提唱するシリアルインターフェースで、組み込みではセンサー類や、外付けEEPROMとの通信に使用されたりします。
I2CではSCL(クロック)とSDA(データ入出力)を使用して同期通信を行います。
通信では主体的に通信を行うマスタと、受動的に通信を行うスレーブに分かれ、マスタが出力するクロックに合わせて信号を変化させてデータのやり取りを行います。

image.png

スレーブには機器ごとにI2Cアドレスが割り振られているため、1つのマスタに複数のスレーブを接続することも可能になります。

マイコンからのデータ読み出し方法

マスタとスレーブ間の通信は書き込みの場合と読み出しの場合で以下のように行われます。

書き込みの場合

  1. [マスタ]スタートコンディションを送信
  2. [マスタ]I2Cアドレスの送信
  3. [マスタ]書き込みを送信
  4. [スレーブ]ACKを送信
  5. [マスタ]データを送信
  6. [スレーブ]ACKを送信
  7. 5~6をデータサイズ分繰り返す
  8. [マスタ]ストップコンディションを送信

image.png

読み出しの場合

実際は先にコマンドを書き込んでから、読み出しを実行することで読み出すデータを選択することができます。

  1. [マスタ]スタートコンディションを送信
  2. [マスタ]I2Cアドレスの送信
  3. [マスタ]読み出しを送信
  4. [スレーブ]ACKを送信
  5. [スレーブ]データを送信
  6. [マスタ]ACKを送信
  7. 5~6をデータサイズ分繰り返す
  8. [スレーブ]ストップコンディションを送信

image.png

Arduinoの使ったセンサ(SHT3x-DIS)の読み出し例

今後更新予定

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?