初めて質問します。
RL78/G13のIICAを使用し、I2Cのスレーブモードを実現しています。
ドライバ部分のコードは、コード生成プラグインを使用しています。
マスター通信にてデータリード部分の通信にてNACKを返す場合があります。
マニュアルを読む限りでは、NACKは、IICAが判断して返してい様におもわれますが、正確にどのような条件で返しているか記載が無いように思われます。
上記条件にてIICAがNACKを返す条件は、何なのでしょうか?
どなたか、ご存知のかたが居られましたら、お教えいただけないでしょうか?
マニュアルの見落としがありましたら、申し訳ありません。
よろしくお願いします。
チョコです。 >ただ、「iica0_slave_handler」内では、「ACKE0 = 0」が無いということは、「iica0_slave_handler」に入るタイミングでは、「ACKE0 = 0」になっていて、ACKを出したい場合に「ACKE0 = 1」にすると理解してよいのでしょうか? いいえ,違います。 通常,スレーブではNACK応答することはない(ACK応答しかしない)ので,コード生成では初期設定(R_IICA0_Create)でACKE0 = 1;と設定されています。 前回のPOSTで示したように,スレーブは通信できないときだけNACK応答します。つまり,通常は常にACK応答するようなプログラムになっています。
追伸
RL78に搭載のIICAはスレーブアドレスはハードウェアで検出して自動でACK応答するようになっています。
ACKE0が有効になるのは,データ受信時のみで,そのときにACKE0の設定に応じて9クロック目でACK/NACK応答になります。