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

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

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)

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

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