CTSUモジュールの引数の設定について

stlと申します。

developper assistanceからR_CTSU_Open(&g_ctsu0_ctrl, &g_ctsu0_cfg);をコピペすると、引数が存在しないためエラーが出ます。

そのため、引数をqe_touch_config.cにある構造体に設定しました。

R_CTSU_Open(g_qe_ctsu_instance_config01.p_ctrl, g_qe_ctsu_instance_config01.p_cfg);

このようにするとエラーは出ないのですが、プログラムを実行すると次の行で止まります。

ctsu_correction_process(p_instance_ctrl);

どこが問題なのでしょうか?

  • R_CTSU_Open関数の引数の型は確認されましたでしょうか。
    stlさんの実際のコードはどのようになっているか知りませんが、アプリケーションノート「RA2L1 搭載静電容量タッチ評価システム Example Project」( www.renesas.com/.../ra2l1-group-capacitive-touch-evaluation-system-example-project )を見た感じ、QEツールが生成したコード(g_qe_touch_instance_config01)はRM_TOUCHミドルウェアで定義されている型を使用しているようです。

    R_CTSU_Open()では、R_CTSUドライバが定義するctsu_ctrl_tやctsu_cfg_t型変数のポインタを入力します。

    R_CTSUドライバはRM_TOUCHミドルウェアの下位ソフトになりますが、それぞれの実装に合わせた引数入力にする必要があります。各APIの仕様をドキュメントで確認された方が良いかと思われます。

  • qe_touch_config.cでctsu_instance_t型の変数が以下のように定義されているので、

    このように

    「R_CTSU_Open(g_qe_ctsu_instance_config01.p_ctrl, g_qe_ctsu_instance_config01.p_cfg)」

    おっしゃっている通りにAPIの引数の型通りに設定しているつもりなのですが、何が違うのでしょうか?

    ctsu_instance_ctrl_t g_qe_ctsu_ctrl_config01;

    const ctsu_instance_t g_qe_ctsu_instance_config01 =

    {

    .p_ctrl = &g_qe_ctsu_ctrl_config01,

    .p_cfg = &g_qe_ctsu_cfg_config01,

    .p_api = &g_ctsu_on_ctsu,

    };

  • g_qe_ctsu_instance_config01であれば、型は合っていますね。失礼しました。

    >このようにするとエラーは出ないのですが、プログラムを実行すると次の行で止まります。
    ctsu_correction_process(p_instance_ctrl);
    元の問題に戻りますが、「プログラムを実行すると次の行で止まります」が具体的にどの箇所で、どのような状態になっているか情報がないのでコメントしようがありません。
    またこの手の実機動作させて期待通り動かないといった問題は、質問者側で再現条件(アプリケーション構成やコンフィグレータ設定内容、コード実装方法、ソフトバージョンなど)の整理をして提供しなければ誰も答えることができないと思います。FSPのソースコードは開示されていますので、まずはどのコードで問題が発生しているかステップ実行などで確認してみてください。

    なお上記の「止まります」が「関数が返らない」なら、気になるのはctsu_correction_process()内、ctsu_correction_measurement()内、while()で無限ループ待ちしている可能性がある点です。

    【参考情報】
    r_ctsu.cファイルは6638行(FSPv5.3.0)あり、e2studioのエディタ表示やブレイクポイントなどがうまく設定できない場合があります。その場合は以下FAQを試してみると良いと思います。
    ・「大きなファイルを開くとEditor Scalabilityの画面が表示される」(ja-support.renesas.com/.../18868893)