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回行われたことがわかる。
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)

後閑 哲也著 技術評論社「C言語&MCCによるPICプログラミング大全」(ISBN-978-4297133641-1)