スマートコンフィグレータ i2c通信 戻り値について

スマートコンフィグレータのi2c通信のAPI関数で

R__Master_Receive ( uint16_t adr, uint8_t * const rx_buf, uint16_t rx_num );

があり、戻り値はないとのことでしたが受信したデータはどのようにすれば確認できるのでしょうか?

初歩的なことで申し訳ないのですがわかる方がいらっしゃれば教えていただけるとありがたいです。

  • すみません、
    R__Master_Receive ( uint16_t adr, uint8_t * const rx_buf, uint16_t rx_num );
    でなく
    R_<Config_SCI0>_IIC_Master_Receiveでした。
  • rx_numで指定したバイト数の受信が行われ、rx_bufに格納されます。
  • チョコです。

    スマート・コンフィグレータ ユーザーズマニュアル RX APIリファレンス編はご覧になっていますか?

    その208ページに以下の記述があります。

     

    >戻り値はないとのことでしたが

    いいえ、戻り値はありますよ。

    上記の記述の下の方に以下のように記述されています。

    RL78のコード生成はよく見ていますが、RXは使っていないので、確認したことはありませんが、上側の図の1行目に「【 RIIC 】マスタ受信を開始します。」とあります。

    もしかすると、単純に、受信動作を起動しただけで、APIから戻ってきてしまっている可能性があります(RL78のコード生成はそうでした)。これに対応するために、受信完了時のcallback処理にプログラムを書く必要がありました。

    ただ、備考3.には「マスタ受信の終了処理として、r_<Config_RIIC0>_receive_interrupt にてストップコンディションを発行しています。」とあるので、もしかしたら、受信完了まで処理している可能性もありますが。

     

     

  • Higetakaさん、回答ありがとうございます。
  • チョコさん、回答ありがとうございます。

    受信完了時のcallback処理のところにmainの内容を書き込むという認識で合っていますでしょうか?

    上記はmainのプログラムなのですがデバックコンソールでみるとstartと0しか表示されません。

    ちなみにデバイスはads1115を使用しております。

     

    もし0が表示される原因がわかったら教えていただけるとありがたいです。

  • チョコです。
    >上記はmainのプログラムなのですがデバックコンソールでみるとstartと0しか表示されません。

    この症状から推測すると、前回コメントしたように、R_<Config_RIIC0>_Master_Send関数やR_<Config_RIIC0>_Master_Receive関数は送信や受信を起動するだけのようです。
    (R_<Config_RIIC0>_Master_Receive関数の説明の備考3. には、マスタ受信の終了処理として、r_<Config_RIIC0>_receive_interrupt にてストップコンディションを発行しています。とあるので不思議です。R_<Config_RIIC0>_Master_Receive関数の中身を確認してください。)

    そうすると、IICの通信完了割り込みの送信完了処理(おそらくr_Config_RIIC0_callback_master_sendend)や受信完了処理(おそらくr_Config_RIIC0_callback_master_receiveend)に通信完了フラグをセットするようにし、mainの方でR_<Config_RIIC0>_Master_Send関数やR_<Config_RIIC0>_Master_Receive関数を呼び出した直後に通信完了フラグをクリアして、通信完了フラグがセットされるのを待つようにしてみてください。
    もしかすると、
    1キャラクタの送信と受信関数を作成して、main関数の中では1キャラクタの送受信の関数を呼び出すようにするのが簡単かもしれません。