E2studioでRAマイコン(R7FA2E1A52DFJ)を開発するにあたって

こんにちは、プロジェクトが出来ないとかさわいでいたのですが、E2studioをインストールし直したらプロジェクトできました。ありがとうございました。

ところで、開発するシステムは非常に簡単なもので、一定時間で割り込みが発生すタイマー2系統、WDT、受信のみのUART、送信のみのUART、最後に1

ピンだけ入力というのもです。プロジェクトを作成し、FSPなるものを利用し、pin, statcsで周辺機能を設定してコードを作成しました。

ここからなのですが、プロジェクトが吐き出したmain.cなどどれもこれもedit不可で、どうやって、ポートの定義やUARTの初期化などのコードを書くのか

わかりません。main.cを見るとhal_entry ()がコールされています。でここを見ると /* TODO: add your own code here */とかいてあります。ここにmain-loop

を書くと言う事ですかね。それと、リセット解除されてから、何処を通ってmain()までくるのか?因みにReset_Handler()がPoweronResetPCみたいなもので

しょうか?なんか初歩的なマニュアルみたいなものはないでしょうか?

 宜しくお願いします

  • u-taro1739さん、こんにちは。ReKawashimaと申します。

    >プロジェクトが出来ないとかさわいでいたのですが、E2studioをインストールし直したらプロジェクトできました。
    そうだったんですね。ぜひ、以前に作成されたチケットに自己解決されたことと、あれば何をして解決したか書いていただけると次に同じ問題に遭遇した方の参考になるかと思います。
    RAマイコンのCプログラムプロジェクトを作成する - Forum - RA MCU - Renesas Community


    >main.cを見るとhal_entry ()がコールされています。でここを見ると /* TODO: add your own code here */とかいてあります。
    >ここにmain-loopを書くと言う事ですかね。
    はい。ユーザのアプリケーションコードはsrcフォルダ内のhal_entry.cのhal_entry関数に記載します。
    ビギナーズガイド(以下)を最初に読まれるのが良いと思います。
    ルネサスRAファミリビギナーズガイド (renesas.com)

    その他、参考資料やビデオも共有しておきます。
    RA Flexible Software Package Documentation: Starting Development (renesas.github.io)
    ・Video: Generating Your First RA FSP Project | Renesas
    ・Video一覧: RA Family Software & Tool Course | Renesas


    >リセット解除されてから、何処を通ってmain()までくるのか?因みにReset_Handler()がPoweronResetPCみたいなものでしょうか?

    まずは、LED Blinkyプロジェクトを使って実機で流れを確認された方が良いかと思います。

    が、認識は合っています。リセット状態解除後、Cortex-M CPUはメモリの先頭0x0に配置されたVector tableのReset Handlerアドレス(0x4オフセット配置)にジャンプし、プログラムを開始します。FSPの場合、startup.c内のReset_Handler関数がそれに該当します。その後クロック設定・メモリの初期化・ICUの初期化などをSystemInit()で処理し、main() -> hal_entry()となり、最終的にユーザアプリケーションが実行されます。

    ※FreeRTOSやAzureRTOS ThreadXなどのRTOSありのプロジェクトを作成した場合はmain() -> OS Kernel entryでOSが起動します。

  • いろいろ有難うございました。なんとか環境は整いました。

    受信エラーの対処のコードを作成するのにSFRにアクセスする必要があると思うのですが、どうしたらいいのでしょうか。R7FA2E1A9.hは見つけたのですが

    受信エラーのフラグを読んで”0”を書き込む必要あると思うのですが、どのように実装されているのでしょうか。

    教えて頂けると幸いです。

  • u-taro1739さん、こんにちは。ReKawashimaです。

    RA Family FSPのr_sci_uartドライバの実装が参考になると思います。
    エラー割り込みを処理するISR関数にて、シリアルステータスレジスタ(SSR)のエラーフラグをリード(下図の黄色部分)・クリア(下図の緑色部分)しています。

    [補足]
    ユーザコードからレジスタアクセスする場合は以下のように記載します。

    // レジスタ全体にアクセス
    R_SCI0->SCR &= 0xF7;
    // ビットフィールド構造体を使って1bitのみにアクセス
    R_SCI0->SSR_b.PER = 0x0;

    ※SCI channel 0のSSRレジスタのPERビットをクリアする例

  • ありがとうございました。