失礼いたします。
MPU6050の慣性計測ICを用いるために簡易I2Cをコード生成にて使用できないかを実験中です。
データシートや他チップ用サンプルを覗いた限り下記に示すMain文で読めるものと考えたのですが上手くいきません。
データの行き来はE1エミュレータにて確認していますがR_IIC11_Master_Sendの各種割り込みは起動しています。
しかし、R_IIC11_Master_Receiveの完了割り込みは起動したりしなかったりするうえ、帰ってくるアドレスには何も入力されていません。
//起動txd[0] = 0x6B*2;txd[1] = 0x00;R_IIC11_Master_Send(DeviceID,txd,2);完了割り込み待ち while (1U) {//IC読み出しメモリ番地指定 txd[0] = 0x3B*2; R_IIC11_Master_Send(DeviceID,txd,1);完了割り込み待ち//IC読み出し要求 R_IIC11_Master_Receive(DeviceID,rxd,14);完了割り込み待ち50ms待機 }
大変恐縮ですが、ご回答よろしくお願いいたします。
チョコ様
重ね重ね失礼いたします。
本機におけるI2Cの動作を理解しようと試行錯誤しておりIICA0にも手を出しているところです。
以下画像はIICA0(SCLA0、SDAA0)にて別個体のMPU6050を接続し、頂いたプログラムに追加したものを動かした結果です。(ブレッドボードの都合上Z軸まわりに180°回転しております。)
ひとまずマスターモードでの動きは同様のアルゴリズムで問題ないように感じました。
これを試しにスレーブモードへ変更し、別個体のRL78/G13をマスターモードで動かして接続したところ
またもやマスター側でACKが返ってきませんでした。
ここでは画像にて得られた結果からマスター側には問題ないとし、スレーブ側にはMPU6050の生データをそのままIICA0のメモリに書き込むといった中継処理の実現を目指しています。
この件でお聞きしたいのは、生成されるR_IICA0_Slave_SendもしくはR_IICA0_Slave_receiveにも何らかの問題もしくは同様の問題を抱えているのでしょうか。
スレーブ動作時のアドレスとIICA0エラー時については処理済みです。
チョコです。
>生成されるR_IICA0_Slave_SendもしくはR_IICA0_Slave_receiveにも何らかの問題もしくは同様の問題を抱えているのでしょうか。
最近のバージョンアップしたものは使ったことはありません。
しかしながら、簡易IICのAPIから判断すると、通信完了はサポートしていないと思われるので、そのための処理は簡易IIC と同様に追加する必要はあるかと思います。
なお、IICA0については、シリアル・インタフェースIICAのマスタ送受信とスレーブ送受信のアプリケーションノートがあります。R01AN2759JJ0201がマスタで、R01AN2760JJ0201がスレーブです。単純な送受信ではなく、普通のセンサのように内部にレジスタをもち、コマンドも持つようになっているようです。こちらを参照してみてください。
提示された情報からはコメントできるのはこの程度です。
以上
回答ありがとうございます。
アプリケーションノートの方を参考に挑戦しようと思います。