RX231のコード生成を用いた簡易IIC通信について

電流・電圧測定デバイスであるINA233を用いて電圧値を測定し,測定値を簡易IIC通信でRX231に送るプログラムを作成しておりますが上手くいきません.

RX231シリーズ R5F52316ADFM 

ROM:256Kbyte RAM 32Kbyte  外部発振20MHzを使用しています.

コード生成はSCI12を簡易IICバスに設定し,生成しました.

void main(void)
{
    R_MAIN_UserInit();
    /* Start user code. Do not edit comment generated here */
   {
    uint8_t     adr         =0      ;//7bit address
 uint8_t     dir         =0      ;//0:Write 1:Read
 
 uint8_t  tx_buf[255] = {0};//send data
     uint8_t  rx_buf[255] = {0};//receive data
 
 while(1){
  adr = 0x41;
  dir = 0x00;
  adr = (adr<<1) | (dir & 0x00);
  tx_buf[0] = 0x88; //READ_VIN PMBusコード ina233
  tx_buf[1] = 0x89; //READ_IN PMBusコード ina233
    
  //PMBusコマンド ina233に送信
  R_SCI12_Create();
  R_SCI12_Start();
  R_SCI12_IIC_Master_Send(adr,&tx_buf[0],3);
  R_SCI12_Stop();
 
  adr = 0x41;
  dir = 0x01;
  adr = (adr<<1) | (dir & 0x00);
 
  //ina233からデータ取得
  R_SCI12_Start();
  R_SCI12_IIC_Master_Receive(adr,rx_buf,3);
  R_SCI12_Stop();
 }
   }
  
    /* End user code. Do not edit comment generated here */
}

CS+の設定等もよく分からないのでその辺りも教えていただけるとありがたいです.

初歩的な質問ですいませんが,よろしくお願いいたします.

//INA233のデータシート

www.ti.com/.../ina233.pdf

Parents
  • fiReさん、こんにちは。NoMaYです。

    > 修正後でも rx_buf[0]='A'(0x41), rx_buf[1]='''(0x27) ですと期待値と異なっていますね。

    ふと気付いたのですが、この値は PMBusコード = D0h(MFR_ADC_CONFIG) の時の値ではありませんか?(バイト順が逆ではありますが。) 私が読もうとしていたのは PMBusコード = E0h(TI_MFR_ID)の時の値でしたので、すみませんが、PMBusコードがE0hではなくて、D0hになってしまっていないか確認して頂けませんか?

    INA233データシートの画面コピー

     

Reply
  • fiReさん、こんにちは。NoMaYです。

    > 修正後でも rx_buf[0]='A'(0x41), rx_buf[1]='''(0x27) ですと期待値と異なっていますね。

    ふと気付いたのですが、この値は PMBusコード = D0h(MFR_ADC_CONFIG) の時の値ではありませんか?(バイト順が逆ではありますが。) 私が読もうとしていたのは PMBusコード = E0h(TI_MFR_ID)の時の値でしたので、すみませんが、PMBusコードがE0hではなくて、D0hになってしまっていないか確認して頂けませんか?

    INA233データシートの画面コピー

     

Children
  • NoMaY様、確認したところtx_buf[0] = 0xE0となっていました。

    そこで他のPMBusコードで試したところ、
    なぜか分かりませんが PMBusコード = 7Eh(STATUS_CML)のとき
    rx_buf[0] = 'T'(0x54) , rx_buf[1] = 'I'(0x49)
    となりました、、

    ちなみにPMBusコード = D0h(MFR_ADC_CONFIG) のときも
    rx_buf[0]='A'(0x41), rx_buf[1]='''(0x27)
    となりました。