RX231 IIC通信 API関数について

はじめまして、KANと申します。

現在、RX231マイコンとEEPROM BR24G256(ROHM製)とでIIC通信を行い、データをやり取りしようとしています。

その際にスマートコンフィグレータから生成されるAPI関数にてデータの受信をしようとするために下記コードを実行したのですが、バッファとしている配列の先頭となるDATA[0]~DATA[3]の3byteにデータが受信されず、DATA[4]~DATA[34]には正常にデータが受信される結果となりました。データ読み取りの際のデータ数を減らしても先頭のデータが受信できない状態となっていました。

先頭のデータが受信できない原因としては何が考えられるでしょうか?それともAPI関数のR_Config_RIIC0_Master_Receiveがそういった仕様になっているのでしょうか?

尚、スレーブアドレス(SLAVE_ADDRESS)は0x50と設定しています。

初歩的な質問かもしれませんが、ご教授願います。

//TEMP_eep配列初期化
TEMP_eep[0] = 0x00;
TEMP_eep[1] = 0x20;

F_eep = 1;
R_Config_RIIC0_Master_Send_Without_Stop(SLAVE_ADDRESS, &TEMP_eep[0], 2);//読み込みアドレス指定

while (F_eep == 1) {//コールバック待ち
nop();
}
F_eep = 1;
T_INI = 2;

R_Config_RIIC0_Master_Receive(SLAVE_ADDRESS, &DATA[0],35);//データ読み込み

while (F_eep == 1 && T_INI != 0) {
nop();
}

Parents
  • 全く的外れかも知れませんが、

    static unsined char DATA[35];

    の様に、受信データが格納される変数の定義に、staticを付けて読み出しを試してみてもらえないでしょうか。

    (DATA[]がグローバル変数の場合は試す意味がありません、関数内でDATA[]を定義している場合)

    昔、I2CのAPI関数を使用した際、変数の記憶寿命と割り込みで変数にデータが格納されるタイミングの関係で、

    思った様にデータが格納されない事があった様な無かった様な…(と思い込んだだけかも知れません)。

    曖昧な記憶で申し訳ないですが。

  • DATA[]をグローバル変数で定義しています。

    その為意味ないかと思われますが、回答いただきありがとうございます。

Reply Children
No Data