STLと申します。
RAマイコンのタッチセンサ機能について、CTSU (r_ctsu)とTouch (rm_touch)はそれぞれ何が異なるのでしょうか?
FSPのマニュアルだと
CTSU (r_ctsu)This HAL driver supports the Capacitive Touch Sensing Unit (CTSU). Itimplements the CTSU Interface.
Touch (rm_touch)This module supports the Capacitive Touch Sensing Unit (CTSU). Itimplements the Touch Middleware Interface.
というふうに記載があるのですが、HALドライバとミドルウェアの違いということになるのでしょうか?HALドライバとミドルウェアの言葉の意味もあまり理解していないのですが、CTSU (r_ctsu)とTouch (rm_touch)のそれぞれのAPI関数は、別の用途で使い分けたりするものなのでしょうか?
ルネサスさんのツールで「QE for CapTouch」という、タッチキーのサンプルプログラムを生成して、モニタリング出来るツールがあります。QE for CapTouchを使う時には、rm_touch(ミドルウェアの方)をNew Stackで追加しますが、rm_touchを追加すると、rm_touchの下にr_ctsuが(勝手に)ぶら下がる形となります。(r_ctsuは単独で使えますが、rm_touchは必ずr_ctsuとセットで使用ということになると思います。)
・r_ctsuはCTSU動作の制御
→ハードの設定やオフセット調整、端子の(容量値)測定まで
・rm_touchはタッチ動作
→タッチ・非タッチの判定(測定値がしきい値を超えているか)
→UARTを制御して、タッチキーの動作のモニタリング等も受け持つ(オプション)
という様なイメージかと思ってます。
お伺いしたいのですが、よろしければお答えください。
OpenやScanStartなどの関数は、rm_touchとr_ctsuどちらともにあると思うのですが、これらの違いは何でしょうか?
rm_touch(ミドルウェア)[上位]
r_ctsu(マイコンのCTSU機能のドライバ)[下位]
の様な階層になると思います。
RM_TOUCH_Open()を実行すると、(ソースコードを追いかけた訳ではありませんが)その中でR_CTSU_Open()が実行されるのではないかと思います。
例えば、RM_TOUCH_DataGet()の戻り値は、ボタンを押しているかどうかの結果値です。それに対し、R_CTSU_DataGet()の戻り値は、静電容量の測定結果です。
ミドルウェア(RM_TOUCH_xx)を使う場合は、r_ctsu側の関数(R_CTSU_xx)は、特別な事情が無い限り、ユーザが直接呼び出す事はしなくて良いと思います。ミドルウェアを使わずに、直接CTSUの機能を使いたい場合は、R_CTSU_xxのAPI関数を使う事になるかと思います。
RA向けのQE for CapTouchで生成したサンプルプログラムでは、ミドルウェア側のAPI関数
RM_TOUCH_Open(), RM_TOUCH_ScanStart(), RM_TOUCH_DataGet()
が使われています。
e2studio+FSP, QE for CapTouchは、ルネサスさんのサイトからダウンロード出来ますので、一度実際に試してみてはいかがでしょうか。マイコンボードがあれば、適当に電線と銅箔テープでもつないでおけば、タッチ動作の実動作を簡単に確認できると思います。(静電容量の変化がリアルタイムにグラフで表示されますし、測定値やパラメータも見ることができます。)
お答えいただきありがとうございました。自分でも動作させてみます。