RL78/G13(マスタ)とADC(スレーブ)によるI2C通信の件

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

RL78/G13(R5F100LE)をマスタにしてADCとのI2C通信を行いたいのですが、マイコンもソフトもハードも初心者でCS+のコード生成とその後どのように作業を行えばよいかわかりません。

使用しているADCはTI社のMCP3422でプルアップ後SCLをP60、SDAをP61と接続しています。

CS+ for CA CXにてシリアルIICA0を選択後、転送モードを”シングルマスタ”にしてみたのですが、その隣の設定部分の値をどのように変更するのか、コード生成後はなにをもとにプログラムを組めばよいのかわからず、サンプルコードや参考になる資料があればご教授いただきたいです。

大変恐縮ですが、よろしくお願いいたします。

Hiro

  • プルアップ抵抗を付けづに内部プルアップだけでやるというのは良くないと思います。ソフトウェアの前にハードウェアを確実に動く構成にすべきだと思います。理由ですが10kから100kの範囲で値を保証しているので100kの場合に合わせた通信速度にする必要があるからです。
    MCP3422は400kHz対応ですが、抵抗値が100kだと難しいと思います。MCP3422のデータシートに電気的な接続について「BASIC APPLICATION CONFIGURATION」で説明があるので参考にされるのが良いと思います。

  • Yamamoto様

    ご指摘ありがとうございます。勉強になります。

    私の記載方法が悪く申し訳ありません。
    プルアップは内部ではなく、プルアップ抵抗を付けております。抵抗値は5kΩです。

  • チョコです。

    今は、CS+ for CA CXはほとんど使われていません。ほとんどがCS+ CC-RL環境に移行しています。

    参考として推奨できるのは、アプリケーション・ノートの「RL78/G13 シリアル・インタフェース IICA(マスタ送受信)」(R01AN2759JJ0201 )になるかと思います。60ページ程度の解説がされているので、初心者にはお勧めではないかと思います。

    このアプリケ―ション・ノートのプログラムはコード生成は、初期設定だけで、API関数等は全て個別にライブラリ(r_iic_lib.c)として準備されています。API関数はコード生成と似ていますが、以下のような関数が提供されています。

    注目すべきは、コード生成ではいい加減なサポートしか行われていない通信完了確認処理まできちんとサポートされていることです。また、「r_IIC_put_data 」や「r_IIC_get_data」と言ったAPI関数が準備されており、初心者には使い易いのではないかと思います。これらの関数についての説明も記述されています。

    その使い方の例はmain関数です。コード生成と違いコメントもきちんと書かれているので、分かり易いはずです。

    ぜひ、参考にしてみてください。

    以上

  • チョコ様

    ご教授いただきありがとうございます。

    お勧め頂いた参考資料を基に学習を進めていきます。

    また疑問点が生まれた場合は再度ご連絡させていただくかもしれないのでその際はお願いいたします。