PDG2 にて生成した RIIC スレーブの送信について

ryokkei と申します。


RX210 のプログラムを作成しています。
周辺機能の設定は PDG2 で生成したコードを使用しているのですが、
RIIC0 のスレーブ動作がうまくいきません。
主な設定は RIIC タブにて、

・I2C フォーマット 標準モード
・スレーブ
・全データの受信完了、スレーブリード要求、ストップ条件検出を関数呼び出しで通知する
・関数によりデータを送信する

です。

リファレンスマニュアルの通り、R_PG_I2C_SlaveMonitor_C0 関数にて
モニタを開始した後、スレーブアドレスへのアクセスを検知して
IIC0SlaveFunc 関数が呼ばれます。その後、Read 要求であることを確認して
R_PG_I2C_SlaveSend_C0 関数にてデータを 254 バイト送信するのですが、
どうもバッファの最初の 1 バイトのみが繰り返し送信されているようです (オシロにて確認)。

リファレンスマニュアルの使用例は変数や関数が間違っていたり、
ちょっと R_IIC_SlaveSendAll 関数のソースを見てみると、コールバック関数が
ない方の処理 (143 行あたり) に、なにやら気になるコメントがあったりと
いったところが気になり、「もしや未完成?」などと勘ぐったりしてしまいます。

このあたりについてなにかご存じの方は、助言いただけるとありがたく存じます。

Parents
  • こんにちは、ryokkei です。

    circle さん、わざわざ調べていただいてありがとうございます。

    PDG2 のバージョンは 2.09.00 です。
    R_IIC_SlaveSendAll は、生成される R_PG_I2C_SlaveSend_C0 関数から呼び出される
    ライブラリ関数なので、リファレンスマニュアルには載っていません。
    C:\Renesas\PDG2\source\RX\RX210\IIC にソースコードがインストールされています。
  • ありがとうございます。分かりました。
    R_PG_I2C_SlaveSend_C0 関数の引数は適切に設定されているでしょうか?

    ちなみに"リファレンスマニュアルの使用例は変数や関数が間違っていたり、・・・"とは、
    どこの部分を指していますか?
    (リファレンスマニュアルP.329の以下部分はチャネル番号が抜けている気がします)
     ↓
    R_PG_I2C_SlaveSend_C(
  • すみません、不慣れなもので、Reply のボタン間違えました。

    引数は、リファレンスマニュアルを見る限り、合っていると思ってるんですけどね。
    バッファのアドレスとデータ数しかありませんし、バッファ内のデータも変更して
    オシロスコープで確認しました。

    関数名の間違いはおっしゃる通りチャネル番号がぬけているのと、
    変数に関しては、read や address0 など、定義のないものが使われていたりと、なんというか、
    失礼なのですが、想像で書いた感がありまして……。
  • 確かにマニュアルの誤記が多いですね。。。

    記載されている情報だけではPDG2で生成されたソースコードが
    間違っているとは判断できかねますが、
    割り込みは許可されているでしょうか?
    (PSWのI ビット制御です)

    また、エミュレータをお持ちであれば、
    以下の方法でPeripheral Driver Generator V.2が生成する関数が呼び出している、ライブラリ(Renesas Peripheral Driver Generator Library)の内部処理もデバッグ可能なようです。
     ↓
    support.renesas.com/.../209828008-FAQ-1010977-Peripheral-Driver-Generator-V-2が生成する関数が呼び出している-ライブラリ-Renesas-Peripheral-Driver-Generator-Library-の内部処理をCS-またはHigh-performance-Embedded-Workshop-でデバッグすることはできませんか-
Reply Children
No Data