RL78/G13におけるCS+コード生成の簡易I2Cについて

失礼いたします。

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がスレーブです。単純な送受信ではなく、普通のセンサのように内部にレジスタをもち、コマンドも持つようになっているようです。こちらを参照してみてください。

    提示された情報からはコメントできるのはこの程度です。

    以上

  • チョコ様

    回答ありがとうございます。

    アプリケーションノートの方を参考に挑戦しようと思います。