60歳からの電子工作ノート

生涯学習として取り組んでいます。

I2C通信とSPI通信(RIICと簡易I2Cの割り込み処理プログラム)

I2C通信の「マスタ送信」「マスタ受信」「マスタ送受信」の割り込み処理プログラムです。RIIC用と簡易I2C用があります。実験には湿度センサ(AHT25)(ASAIR (Guangzhou Aosong Electronic)製) とサーモパイル型赤外線センサ(A3D01S-FU-50-60)(日本セラミック製)を使いました。次の資料を参考にしています。資料1*1 ,資料2*2, 資料3*3 

 

温湿度センサ(AHT25)の処理

測定の開始は「マスタ送信」でトリガコマンドを送信します(2秒間隔)。500msec後に「マスタ受信」により温湿度データを読み出します。その500msec後に、温湿度の計算を行います。この処理はRIICと簡易I2Cで共通です。

(センサの電源投入時のCalibration check(ステータスの0x18 チェック)は未実装です。)

図1. マスタ送信、マスタ受信、温湿度計算の実行タイミング 

サーモパイル型赤外線センサ(A3D01S-FU-50-60)の処理

センサ周囲温度を「マスタ送受信」(コマンド=0x70)により読み出します。500msec後に、読み出しデータから周囲温度を計算します。500msec後に測定対象物の温度を「マスタ送受信」(コマンド=0x71)により読み出します。その500msec後に、読み出しデータから対象物の温度を計算します。この処理はRIICと簡易I2Cで共通です。

図2. マスタ送受信、温度計算の実行タイミング

RIIC 割り込みフロー

割り込み処理が起動されるタイミングについては、資料2の「6.2 割り込み発生タイミング」に記載されています。

図3. RIIC割り込みフロー 1/3

図4. RIIC割り込みフロー 2/3

図5. RIIC割り込みフロー 3/3



簡易I2C通信 割り込みフロー

割り込み処理が起動されるタイミングについては、資料3の「6.2 割り込み発生タイミング」に記載されています。

 

図6. 簡易I2C割り込みフロー 1/4

図7. 簡易I2C割り込みフロー 2/4

図8. 簡易I2C割り込みフロー 3/4

図9. 簡易I2C割り込みフロー 4/4




プログラム(RIIC)

図10. ファイル一覧(RIIC)

図11. 使用している割り込み(RIIC)

本プログラムで使用する割り込み処理は、timer.cとriic.cで記述するようにしました。

このためルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化しました。

図12. 割り込み処理のコメント化(RIIC)

ルネサス提供ファイルとは、CS+の新規プロジェクトで作成されるファイルです。

GitHub登録場所: https://github.com/vABCWork/RIIC_intr

(通信速度が100[Kbps]を超えないように、 ICBRH、ICBRLレジスタの設定を修正しまた。(オシロの測定で約98[Kbps]) )

プログラム(簡易I2C)

図13 ファイル一覧(簡易I2C)

図14. 使用している割り込み(簡易I2C)

本プログラムで使用する割り込み処理は、timer.cとsci_iic.cで記述するようにしました。

このためルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化しました。

図15. 割り込み処理のコメント化(簡易I2C)

GitHub登録場所: https://github.com/vABCWork/SCI_IIC

動作確認

RIIC割り込み

図16 . 温度センサ マスタ送信とマスタ受信 (RIIC割り込み)

図17. サーモパイル マスタ送受信(RIIC割り込み)

簡易I2C割り込み

図18. 温度センサ マスタ送信とマスタ受信 (簡易I2C 割り込み)

図19. サーモパイル マスタ送受信(簡易I2C 割り込み)

変数の値

読み出しデータから温度(湿度)を計算した値です。

図20. 使用している変数

実験の様子

RIICの場合はRIIC用のUSBポートを、簡易I2Cの場合は簡易I2C(SCI-I2C)用のUSBポートを使用します。USBケーブルは30[cm]です。

図21. RIICと簡易I2Cの実験

 

*1:資料1「RX23E-Aグループ ユーザーズマニュアル ハードウェア編 ( R01UH0801JJ0120 Rev.1.20)」

*2:資料2「RX ファミリ I2C バスインタフェース(RIIC)モジュール Firmware Integration Technology (R01AN1692JJ0249 Rev.2.49)」

*3:資料3「RX ファミリ 簡易 I2C モジュール Firmware Integration Technology (R01AN1691JJ0249 Rev.2.49)」