2.I2C接続(slave)
2023/9/2
概要
MCCでI2C通信のコアはできたらしい。
手許の書籍「C言語&MCCによるPICプログラミング大全」を参考にI2C接続(slave)をつくる。
「C言語&MCCによるPICプログラミング大全」によるとライブラリには手を付けず、main.cに追記している。
スレーブの動作は
マスタから送られたデータが
・データ1バイト目が0xa0であるときRA5をH
・データ2バイト目が0x0aであるときRC5をH
・データ3バイト目が0x41であるときRA5,RC5をL
とする。
この後、スレーブからマスタに4バイトのデータ(0x41,0x42,0x43,0x44)を返信
RA5,RC5,I2Cは、LEDによる目視は行わず、ロジックアナライザによる観測とする。
main.c
MCCが用意した関数をそのまま使う。
マスタが送信するデータ数(3バイト)、スレーブが送信するデータ数(4バイト)に固定したプログラムになっている。
柔軟性に欠けるが、これは通信はできているので、これで良しとする。
実行結果
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)
後閑 哲也著 技術評論社「C言語&MCCによるPICプログラミング大全」(ISBN-978-4297133641-1)