Copyright (C)SUWA TSUSHIN NETWORK.
All Rights Reserved. TOPへ戻る
スポンサードリンク

No.0038 2021.8.15




ルネサス RA4W1マイコン 初心者(8) FSPでデジタル入力、出力をしてみる





今回のソースファイル: hal_entry.c のみ (4.58 KB)


□ 1.FSPでデジタル入出力

前回の 「 No.0035 ルネサス RA4W1マイコン 初心者(5) デジタル入力、出力をしてみる 」 では直接レジスタを指定して制御しました。

しかしルネサスとしては、レジスタを直接制御しないでFSPを使用して開発して欲しいようです。RAマイコンの立派なハードウェアマニュアルは何に活用するんだ?という疑問を持ちつつ、今回はFSPを使用してデジタル入力、出力をしてみます。


□ 2.入出力をしてみる

前回作成したデジタル入出力の処理をFSPに置き換えます。
前回のソースコードは以下の通りです。



今回は以下のようにソースコードを変更しました。
灰色が削除した部分、薄いピンク色が変更・追加した部分です。





@ 入力の設定

プロジェクトエクスプローラーに表示されているconfiguration.xmlをダブルクリックして、FSP Configurationを開きます。




マイコンのP402端子を入力として使用するために、Pinsの設定を以下のようにします。




A 出力の設定

出力は、P106(LED0)、P404(LED1)を使用します。
Pinsの設定をそれぞれ以下のようにします。
設定完了後は、必ず [Generate Project Content] をクリックして、ソースコードを生成・反映させます。




B 入力の読み込み

FSPの R_IOPORT_PinRead 関数 を使用します。





第1引数の ioport_ctrl_t *const p_ctrl は、上のほうで勝手に定義されているのでそのまま使います。
第2引数の bsp_io_port_pin_t pin は、対象のピン番号を指定します。bsp_io_port_pin_t型の定義を確認すると、

 BSP_IO_PORT_##_PIN_$$

 ##・・・ポート番号
 $$・・・ピン番号

という命名則で、各ピンが#defineされてその定数を指定するようになっています。
P402端子の場合は、BSP_IO_PORT_04_PIN_02 となります。

第3引数の bsp_io_level_t *p_pin_value は、読み込んだ値を格納する変数をポインタで渡します。
ですので、予めbsp_io_level_t型にて変数を宣言しておく必要があります。
bsp_io_level_t型の定義を確認すると、BSP_IO_LEVEL_LOW、BSP_IO_LEVEL_HIGH の値が返ってくることが分かります。それぞれ0と1です。

ソースコードでは以下のように記載します。

  R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_02 , &level)  // 入力 P402 SW1




C 出力のON/OFF

FSPの R_IOPORT_PinWrite 関数 を使用します。





第1引数の ioport_ctrl_t *const p_ctrl は、上のほうで勝手に定義されているのでそのまま使います。
第2引数の bsp_io_port_pin_t pin は、対象のピン番号を指定します。入力と同じです。
第3引数の bsp_io_level_t level は、書き込む値を指定します。値の定義は入力と同じです。
BSP_IO_LEVEL_LOW、BSP_IO_LEVEL_HIGH のどちらかの値を指定します。数字で0もしくは1を指定しても問題ありません。

ソースコードでは以下のように記載します。

  R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_06 , BSP_IO_LEVEL_HIGH);

もしくは

  R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_06 , 1);  // 出力:ON LED0


FSPでデジタル入出力を行う場合、最初にR_IOPORT_Open関数を呼び出す必要があります。しかしマイコン起動時に呼び出されるhal_entry.c 内の R_BSP_WarmStart関数の中にすでに記述があるので、デジタル入出力のみOpen関数を記述する必要がありません。

今回は、マイコンのハードウェアマニュアルを確認せずにコーディングできました。
しかしFSPの使い方や関数ライブラリを読んで理解する工数が発生しました。
FSPは基本的にブラックボックスであり、モジュールとして自動コード生成やライブラリを使ってマイコンを制御します。
レジスタを直接操作する方法とFSPを使う方法では、信頼性や難易度で一長一短があります。



スポンサードリンク

TOPへ戻る


ご利用条件
 Copyright (C)SUWA TSUSHIN NETWORK. All Rights Reserved.