ads1115とのi2c通信について

cs+でスマートコンフィグレータを利用してads1115とi2c通信を行おうと思っています。

R__Master_Send ( uint16_t adr, uint8_t * const tx_buf, uint16_t tx_num );

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

の関数で2番目の引数に何を入れればいいかわからず苦戦しております。

どなたかわかる方がいたら教えていただけないでしょうか?

  • チョコです。

    SCのAPIについては、「スマート・コンフィグレータ ユーザーズマニュアル RX API リファレンス編」(R20UT4360JJ)を参照してください。
    例えば、「R_<Config_RIIC0>_Master_Send」では、206ページに引数や戻り値の説明があります。それによると、送信したいデータが格納されているバッファを指すのが「uint8_t * const tx_buf」です。ちなみに、1番目がスレーブ・アドレスで、10ビット・アドレスに対応しているようです。
    また、201ページの「表4.18 I2C マスタモード用 API 関数 (RIIC)」を見ると、「R_<Config_RIIC0>_Master_Send_Without_Stop」という関数も準備されているようで、どちらかというと、「R_<Config_RIIC0>_Master_Send」ではなく、こちらの方になるかと思います。

    とにかく、マニュアルをダウンロードしてよく読んでください。
  • チョコさん、回答ありがとうございます。

    引数が何を示しているのかはわかっていたのですがads1115の場合具体的な値は何なのかなと思って質問させてもらいました。データシートを見ても理解できなかったのでよろしければ教えてもらいたいです。
    何度もすみません。よろしくお願いします。
  • チョコです。
    つまり、ads1115の使い方が分からないということですね。
    私は使ったことはありませんが、ads1115のデータシートで「9.5.2.1 Receive Mode」には、スレーブアドレスに続いて"Address Pointer Register"を受信、その後2バイと(上位バイトから)受信するとあります。これは、よくあるスレーブの形式です。
    "Address Pointer Register"は下位2ビットが内部のレジスタを指し示し、00なら、"Conversion register"で、変換結果のようです。01が"Config register"で、ステータスや動作モードの設定のようです。
    10は"Lo_thresh register"で下側の閾値で2の補数形式で8000hが初期値、11は"Hi_thresh Register"で上側の閾値で、7FFFhが初期値と書いてあります。

    つまり、Mster_Sendで、「"Address Pointer Register"」と指定したレジスタに書き込むデータをads1115に書き込むことで、動作モード等を設定します。

    読出しの場合には、Mster_Sendで、「"Address Pointer Register"」だけを書き込み、その後Master_Receiveで"Address Pointer Register"の値を読み出します。

    具体的な制御方法は、ネット上にads1115を使ったプログラム例がラズパイやArduinoであるので、そちらを参考にしてください。
  • チョコさん、回答ありがとうございます。
    返信が遅くなり申し訳ございません。

    わざわざ調べてくださってありがとうございます。
    参考にして頑張って作成してみます。