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です。

    以下のリプライを有難う御座いました。そうでしたか、ルネサスさんのウェブサイトからCS+をダウンロード/インストールしても、RXスマートコンフィグレータがインストールされなかったのですね。そうなると、ここ暫くは(こうやればインストール出来ますよとアドバイスが出来る状態に私がなるまでは(週末調べてみます))、コード生成機能で作業を進めるしかないですね。[追記] あっ、そういば、もう金曜日の夕方ですね、、、

    > RENESASのHPから統合環境をインストールしてCS+を使っている状態です。
    > RXスマートコンフィグレータの存在は知りませんでした、、
    > あとお察しの通りrxマイコンもCS+も今回初めて使っています。

    多数の別スレッド(RL78ですが)でチョコさんがコード例を提示されているのですが、ルネサスさんのコード生成機能やRXスマートコンフィグレータの通信系のAPI関数仕様は、初心者さんがちょっと使い始めようとする時点ではコツが分からず皆苦労されるようです。(コツといっても実に些細なことで、コードを提示してしまえば直ぐに分かることですが、文章で書くと分かり難い気もします、、、これから私の手元でコード生成機能でソースを生成させてみますので、暫くお待ちください、、、)

    それとは別に、相手側デバイスのデータシートを見ていて気になったのですが、チョコさんも指摘されているように、以下の処理は不要だと思われます。(これからソースを生成させて確認しますが。) つい最近の別スレッドでの話なのですが、RX版のコード生成機能のAPI関数に渡すスレーブのアドレスは7bitアドレスのようですので、以下でadr=0x41としたら、その下の2行は不要だと思われます。ちなみに、スレーブのアドレスが0x41ということは、相手側デバイスのA1端子=GND&A0端子=VSなのですよね?

    adr = 0x41;
    dir = 0x01;
    adr = (adr<<1) | (dir & 0x00);

    また、同じく、相手側デバイスのデータシートを見ていて気になったのですが、以下のようにPMBus Command Codeを複数指定することは出来ないのではないでしょうか?(データシートを斜め読みしている段階ですので、私が読み漏らしているかもしれませんが、、、)

    tx_buf[0] = 0x88; //READ_VIN PMBusコード ina233
    tx_buf[1] = 0x89; //READ_IN PMBusコード ina233

    [関連リンク]

    RX版のコード生成機能のAPI関数に渡すスレーブのアドレスは7bitアドレスである、という話があった、つい最近の別スレッドのURLです。

    アドレス部の先頭1bitが送信されない(I2C)
    japan.renesasrulz.com/cafe_rene/f/forum5/6157/1bit-i2c/34102#34102
     

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

    以下のリプライを有難う御座いました。そうでしたか、ルネサスさんのウェブサイトからCS+をダウンロード/インストールしても、RXスマートコンフィグレータがインストールされなかったのですね。そうなると、ここ暫くは(こうやればインストール出来ますよとアドバイスが出来る状態に私がなるまでは(週末調べてみます))、コード生成機能で作業を進めるしかないですね。[追記] あっ、そういば、もう金曜日の夕方ですね、、、

    > RENESASのHPから統合環境をインストールしてCS+を使っている状態です。
    > RXスマートコンフィグレータの存在は知りませんでした、、
    > あとお察しの通りrxマイコンもCS+も今回初めて使っています。

    多数の別スレッド(RL78ですが)でチョコさんがコード例を提示されているのですが、ルネサスさんのコード生成機能やRXスマートコンフィグレータの通信系のAPI関数仕様は、初心者さんがちょっと使い始めようとする時点ではコツが分からず皆苦労されるようです。(コツといっても実に些細なことで、コードを提示してしまえば直ぐに分かることですが、文章で書くと分かり難い気もします、、、これから私の手元でコード生成機能でソースを生成させてみますので、暫くお待ちください、、、)

    それとは別に、相手側デバイスのデータシートを見ていて気になったのですが、チョコさんも指摘されているように、以下の処理は不要だと思われます。(これからソースを生成させて確認しますが。) つい最近の別スレッドでの話なのですが、RX版のコード生成機能のAPI関数に渡すスレーブのアドレスは7bitアドレスのようですので、以下でadr=0x41としたら、その下の2行は不要だと思われます。ちなみに、スレーブのアドレスが0x41ということは、相手側デバイスのA1端子=GND&A0端子=VSなのですよね?

    adr = 0x41;
    dir = 0x01;
    adr = (adr<<1) | (dir & 0x00);

    また、同じく、相手側デバイスのデータシートを見ていて気になったのですが、以下のようにPMBus Command Codeを複数指定することは出来ないのではないでしょうか?(データシートを斜め読みしている段階ですので、私が読み漏らしているかもしれませんが、、、)

    tx_buf[0] = 0x88; //READ_VIN PMBusコード ina233
    tx_buf[1] = 0x89; //READ_IN PMBusコード ina233

    [関連リンク]

    RX版のコード生成機能のAPI関数に渡すスレーブのアドレスは7bitアドレスである、という話があった、つい最近の別スレッドのURLです。

    アドレス部の先頭1bitが送信されない(I2C)
    japan.renesasrulz.com/cafe_rene/f/forum5/6157/1bit-i2c/34102#34102
     

Children
No Data