IICAを簡易I2Cとして使用する方法

シリアルインターフェイスIICAでデータを取得できません 」ではお世話になりました。色々触ってみましたがうまくいきませんでした。

そのため、R5F10Y47の15番と16番のIICAを簡易I2Cとして使用したいと思います。その場合のR_IICA0_Createの方法を記載したページはございますか?
アドバイスのほどお願いいたします。UARTも使いたいので・・・。

環境 R5F10Y47(VDD=3.3V、IICAも)、E2 Lite、E2-Studio

  • つくたろうさん、こんにちは。NoMaYです。

    お久しぶりです。IICAで結局うまく行かなかったとのことですが、そのままでは、次は簡易I2Cでということでのアドバイスは、きっと、なかなか得られないと思いますよ。私は、チョコさんや鈴木さんのようにIICAに詳しい訳ではないですが、これまでのスレッドの流れを読み返してみようと思います。そちらのスレッドで幾つか質問をするかと思いますが、少々付き合って頂けませんか?

  • チョコです。
    >R5F10Y47の15番と16番のIICAを簡易I2Cとして使用したいと思います。
    「簡易I2C」が何を意味されているかが理解しかねます。元々IICA0がRL78のフル機能のI2Cのコントローラで
    そこから機能を削減してマスタでしか使えなくしたのが簡易I2Cです。
    そもそも,R5F10Y47の15ピンと16ピンはIICA0の機能しか割り当てられていません。使い方としてはIICA0でしか使えません。
    RL78/G10を使用する範囲においては,CS+で何も制限なく使えるはずなので,まずはCS+とE2 Liteの環境で
    動作させてみることをお勧めします。
  • わわいです
    一番の問題なのが、つくたろうさんがIICと言うものが何か理解できていないことですね。
    まずは、IICでつなぐデバイスのマニュアルを見てください。
    そこにはIICのデータの送出手順が詳しく書かれていますので、R5F10Y47の15番と16番をIOポートとして設定し、そこに書かれている通りの波形をポートで出すコードを書いてみてください。
    もちろんそのときには、SDA,SCLをオシロで波形を見て、マニュアルに書かれている通りの波形が出ていることを確認します。
    そこら辺の動作が理解できるようになれば、自動生成コードなんかもどうやって使えばいいかというのがわかってくるかと思います

    がんばってください。
  • チョコです。
    わわいさん,初心者にポートでの制御は無理でしょう。
    オリジナルのスレッドの方で,すでに対応の参考になるプログラムそのものを提供しています。
    やるとすると,そのプログラムでの処理と制御対象のデータシートを突き合わせて,制御方法を
    理解するのが現実的です。
  • RL78/G10ユーザーズマニュアルハードウェア編のP425の初期設定がR_IICA0_Createと思っているのですが、間違いでしょうか?
  • チョコです。
    完全に同じではありませんが,やるうとしていることは同じです。
    (マニュアルではIICA0に直接関係する項目だけで,割り込み関係は含んでいません。)
  • チョコです。
    やっていることが微妙に異なっているので,若干説明をしておきたいと思います。
    ・ポート設定
    マニュアルでは「最初はポートを入力モード,出力ラッチは0に設定」
    コード生成では「POM0 |= 0xC0U;PMC0 &= 0x3FU;P0 |= 0xC0U;PM0 |= 0xC0U;」
    となっています。マニュアルはRL78で共通的な書き方になっているので,実際にRL78/G10で使用するにはPOM(出力をオープンドレインに設定)やPMC(兼用のアナログ機能からデジタル入出力に設定)を追加する必要があります。ここらは,個々のデバイス用のコード生成の方がきちんとしています。実際のポート出力制御部分も出力ラッチの値が異なっていますが,これはポートが入力なので,出力ラッチの値はどちらでも構いません。重要なのは,IICA0の設定が完了するまではIICA0の出力はLowになるので,そのままIICA0の最終的な設定にしてしまうと,外部端子にLowが出力されてしまうので,IICA0の設定完了までは出力しないようにすることです。
    ・IICA0の設定
    IICA0の細かな設定で,順序はそれほど気にしなくていいかと思います。IICE0を1にするまでに完了すればよいと考えてください。
    IICCTL00のSPIEnの設定が異なりますが,通常はコード生成の様に0にするのがいいと思います。
    IICF0のSTCEN0とIICRSV0の設定が異なりますが,マニュアルのSTCEN0の設定は昔の78K0等と同じ状態にするもので,コード生成の方が簡単でいいと思います(マニュアルでは,STCEN0=0にしたためにトップ・コンディションを発行しないといけなくなりました)。IICRSV0は通信予約は殆ど使わないと思うので,コード生成の方がいいと思います。
    IICE0を1して設定は終わりなので,ポートを出力に設定してお終いです。コード生成で,LREL0を1にしているのは,単なる念のため以上ではなく,なくても関係ありません。

    以上,不安の払しょくに役立てば幸いです。