5.I2C接続(master)

2023/8/29


ESP-WROOM-02とPIC16F1503をI2Cで接続する

ESPをI2Cマスタ、PICをI2Cスレーブにする。
ESP側は、温度センサ(DHT20)を使用したときのスケッチを参考にすれば問題ないだろう。
PIC16F1503のI2Cアドレスは自由に指定できそうだが、何にすればよいのだろうか?
I2Cのルールで使用できない(予約済)アドレスがあったはずだ。
arduino

I2Cマスタ スケッチ

スレーブのアドレスは勝手に決めてよいらしい。温湿度センサDHT20がアドレス0x38を使用しているので、これ以外にすればよいだろう。 暫定的にアドレスは7ビットとし、0x40にする。不都合があれば後日、修正する。
サーバの動作は
  1. マスタからスレーブへ3バイト(0xa0,0x0a,0x41)を送信
  2. 送信後、スレーブからマスタへ4バイト返信
    スレーブからの返信をシリアルモニタで確認
  3. 5mS待機
    以下1から3を5回繰り返す

実行結果

I2C通信はロジックアナライザで確認する。
I2C通信が5回行われたことがわかる。
arduino

1回の通信を拡大すると
・マスタがスレーブ(アドレス0x40)に対してデータ0xa0,0x0a,0x41が送信
・スレーブは
 ・0xa0を受信した後RA5(D2)をH
 ・0x0aを受信した後RC5(D3)をH
 ・0x41を受信した後RA5(D2),RC5(D3)をL
 ・終了(P)
・マスタがスレーブ(アドレス0x40)に対して返信要求
・スレーブは
 ・0x41,0x42,0x43,0x44を返信
・マスタは4バイト受信したので終了(P)
arduino

マスタ開発環境でシリアルモニタを見ると、スレーブから4バイト 65(0x41),66(0x42),67(0x43),68(0x44) の返信が5回あったことがわかる。
arduino


ESP-WROOM-02(ESP8266) I2C接続(master)

PIC1503 I2C接続(slave)