ルネサスのチップRX63N(GR-SAKURAに入っているのと同じ)の評価ボードと、統合開発環境e2studio(本当は2は上付きらしい)、
デバイスドライバ部分をGUIで設定できるPeripheral Driver Generator2を使って、組み込みチックなプログラムを作成する
セミナーに参加したので、開発方法をメモ
【環境】
・評価ボード:RX63N100ピン(R5F563NBDxFP)を搭載したボード(MTK-RX63N)
→たぶんGR-SAKURAもこれ積んでる?ただ、セミナーのボードはピンクじゃなかった
・統合開発環境+コンパイラ:e2studio+RXコンパイラ
→e2studioは無料みたい。RXコンパイラは有償のもの。
無料で行うにはKPIT GNU Toolsをツールチェーンとして使う。詳しくは、以下のサイト参照
e2studioの導入~KPIT GNU Tools
https://www.embedded-property.net/2014/02/e2studioの導入%EF%BD%9Ekpit-gnu-tools/
・デバイスドライバ関係:Peripheral Driver Generator2
→Peripheral Driver Generator2でいろいろ設定すると、ソースを自動生成してくれる。無償。
実際には、Renesas Peripheral Driver Libraryを利用している。詳しくは、以下のサイト参照
https://www.renesas.com/ja-jp/products/software-tools/software-os-middleware-driver/software-package/renesas-peripheral-driver-library.html
【手順】
(1)e2studioで、以下のことを行う
(1-1)新規プロジェクトの作成
メニュー→新規→CProject
出てきたダイアログで
プロジェクト名:適当に入力
デバッグハードウェア:Segger JLink(RX) にしたけど。。。
ターゲット:RX600→RX63N→RX63N100pin→R5F563NBDxFP)
いくつかのダイアログを「次へ」で送り、最後のほうのダイアログの一番下
ハードウェア設定関数の生成: C/C++ソースファイル
→ここで、ソースコードが自動生成され、プロジェクトができる。とりあえず、ここまで
(2)Peripheral Driver Generator2で、以下のことを行う
(2-1)新規プロジェクトの作成
メニュー→「ファイル」→「新規作成」
出てきたダイアログで
ディレクトリ: ワークスペースのパス\上記プロジェクト名\src
シリーズ:RX600
グループ:RX63N
型番 :R5F563NBDDFP
(2-2)各種デバイスの設定を行う
・クロック設定(必須):systemタブ→システム→クロック発生回路(左側)
内部クロップ:PLL
メイン:12
VCO:192
(スクロールして)
システムクロック 96
周辺モジュールA 96
周辺モジュールB 48
フラッシュIF 48
→RX63Nの場合。具体的な数値は、それぞれのターゲットによって違う
・消費電力:LPCタブ
消費電力低減機能にチェック
メインクロック安定化にチェック 1310727サイクル
PLL安定化にチェック 2097152サイクル
※そのほかは、使用するデバイスに応じて必要なら設定する
・GPIO:I/Oタブ→ポート 端子P40などの番号の上2桁目(P40ならポート4,PA2ならポートA)
使う端子をチェック、入力か出力かを設定、プルダウン、高駆動はお好みでチェック
→GPIOはPDRというレジスタを使う。なので、関数名にPIDR(入力)PODR(出力)が付く
・割り込み(IRQ): ICubタブ
使いたいIRQをチェック、そこの割り込み関数をコーディングすることになる。
→使いたいピン:接続しているスイッチによって、IRQの番号が決まる
・SPI:RSPIタブ RSPI0
このチャンネルを使用する チェック
モードはクロック3線式マスターモード等
→4線式だとSSLアサート設定
バッファは適当に(128など)、ベースビットレートも適当に
転送終了まで待ちたい場合は、転送方法にその旨設定
・I2C:RIICタブ
このチャンネルを使用する
ビットレートは適当に
受信・送信完了まで待つのであれば、送受信方法のマスタ受信・送信方法をそれぞれ設定
・タイマー(CMT):CMTタブ→ユニット0 CMT0
このチャンネルを使用するにチェック
カウントソース 内部クロック(PCLK/512)にすると、
割り込み周期 500 mSecにたしか、なってくれた気が・・・
それでよければ、そのまま、違ったら設定
コンペアマッチ 割り込みを使用する と割り込み使える
・リアルタイムクロック(RTC):RTCA0タブ
リアルタイムクロックを使用するにチェック
周期割り込み 割り込み周期を適当に設定(デフォルト2秒、1秒にしたければ設定変更)
・PWM(デューティ値を変化):TPUタブ TPU0
このチャンネルを使用するにチェック
動作モード:PWMモード2
カウンタ要因:TGRDのコンペアマッチ
カウントソース、タイマー動作の秒数は適当に
(スクロールして)
TGRA
レジスタ初期値:適当に
アウトプットコンペア TIOCAnの 端子 0 コンペア 1 カウンタ 0
(スクロールすると)
波形が出る
・A/D変換(S12AD):S12AD0タブ
このユニットを使用する
使用するユニットだけチェック
変換開始トリガ ソフトウェアトリガ
割り込み A/D変換終了後にするならチェック
(2-3)以下の操作を行って、デバイスドライバ生成
メニュー→「ツール」→「ソースの生成」
メッセージが出たら
メニュー→「ツール」→「e2studioプロジェクトの設定」
ここで、セクションから、何かを除け、アドレスを、なんどかD0にしろなどの指示が出る
(3)e2studioに戻って、以下のことを行う
(3-1)リンカーオプションの設定
メニュー→プロジェクト→プロパティ
出てきたダイアログ
(左)C/C++ビルド→設定→ツール設定→Linker→セクション
(2-3)で出てきたものの除去、アドレス変更してOK
(3-2)ソースコードの変更
hardwareSetup.cの修正:初期化を行う
プロジェクト名.cの修正:main()の記述
(3-3)ビルド
メニュー→プロジェクト→すべてビルド をすると、すべてビルドしてしまうので、
プロジェクトを右クリック→右メニュー→ビルド
すればいいかも
※ビルドが成功すると、実行できる
(4)ボードを差し込み、e2studioでデバッグ実行
(4-1)ボードをUSBケーブルでつなぐ
→もっと前につながないといけないかも?初めからつないでた。
(4-2)デバッガで実行
プロジェクトを選択して右クリック→右メニュー→デバッグ→Renesas GDB なんとかかんとか
パースペクティブ切り替える旨でるのでOK(はい?)
再開(緑の四角に三角形)ボタンを2回クリック
→ボードから使えるようになる
中断ボタン()で中断させて、変数のところにマウス持って行って値見れる
終了(■)で終了
(4-3)プログラミングに戻る場合は、右上の「C」のアイコンをクリック
デバイスドライバ部分をGUIで設定できるPeripheral Driver Generator2を使って、組み込みチックなプログラムを作成する
セミナーに参加したので、開発方法をメモ
【環境】
・評価ボード:RX63N100ピン(R5F563NBDxFP)を搭載したボード(MTK-RX63N)
→たぶんGR-SAKURAもこれ積んでる?ただ、セミナーのボードはピンクじゃなかった
・統合開発環境+コンパイラ:e2studio+RXコンパイラ
→e2studioは無料みたい。RXコンパイラは有償のもの。
無料で行うにはKPIT GNU Toolsをツールチェーンとして使う。詳しくは、以下のサイト参照
e2studioの導入~KPIT GNU Tools
https://www.embedded-property.net/2014/02/e2studioの導入%EF%BD%9Ekpit-gnu-tools/
・デバイスドライバ関係:Peripheral Driver Generator2
→Peripheral Driver Generator2でいろいろ設定すると、ソースを自動生成してくれる。無償。
実際には、Renesas Peripheral Driver Libraryを利用している。詳しくは、以下のサイト参照
https://www.renesas.com/ja-jp/products/software-tools/software-os-middleware-driver/software-package/renesas-peripheral-driver-library.html
【手順】
(1)e2studioで、以下のことを行う
(1-1)新規プロジェクトの作成
メニュー→新規→CProject
出てきたダイアログで
プロジェクト名:適当に入力
デバッグハードウェア:Segger JLink(RX) にしたけど。。。
ターゲット:RX600→RX63N→RX63N100pin→R5F563NBDxFP)
いくつかのダイアログを「次へ」で送り、最後のほうのダイアログの一番下
ハードウェア設定関数の生成: C/C++ソースファイル
→ここで、ソースコードが自動生成され、プロジェクトができる。とりあえず、ここまで
(2)Peripheral Driver Generator2で、以下のことを行う
(2-1)新規プロジェクトの作成
メニュー→「ファイル」→「新規作成」
出てきたダイアログで
ディレクトリ: ワークスペースのパス\上記プロジェクト名\src
シリーズ:RX600
グループ:RX63N
型番 :R5F563NBDDFP
(2-2)各種デバイスの設定を行う
・クロック設定(必須):systemタブ→システム→クロック発生回路(左側)
内部クロップ:PLL
メイン:12
VCO:192
(スクロールして)
システムクロック 96
周辺モジュールA 96
周辺モジュールB 48
フラッシュIF 48
→RX63Nの場合。具体的な数値は、それぞれのターゲットによって違う
・消費電力:LPCタブ
消費電力低減機能にチェック
メインクロック安定化にチェック 1310727サイクル
PLL安定化にチェック 2097152サイクル
※そのほかは、使用するデバイスに応じて必要なら設定する
・GPIO:I/Oタブ→ポート 端子P40などの番号の上2桁目(P40ならポート4,PA2ならポートA)
使う端子をチェック、入力か出力かを設定、プルダウン、高駆動はお好みでチェック
→GPIOはPDRというレジスタを使う。なので、関数名にPIDR(入力)PODR(出力)が付く
・割り込み(IRQ): ICubタブ
使いたいIRQをチェック、そこの割り込み関数をコーディングすることになる。
→使いたいピン:接続しているスイッチによって、IRQの番号が決まる
・SPI:RSPIタブ RSPI0
このチャンネルを使用する チェック
モードはクロック3線式マスターモード等
→4線式だとSSLアサート設定
バッファは適当に(128など)、ベースビットレートも適当に
転送終了まで待ちたい場合は、転送方法にその旨設定
・I2C:RIICタブ
このチャンネルを使用する
ビットレートは適当に
受信・送信完了まで待つのであれば、送受信方法のマスタ受信・送信方法をそれぞれ設定
・タイマー(CMT):CMTタブ→ユニット0 CMT0
このチャンネルを使用するにチェック
カウントソース 内部クロック(PCLK/512)にすると、
割り込み周期 500 mSecにたしか、なってくれた気が・・・
それでよければ、そのまま、違ったら設定
コンペアマッチ 割り込みを使用する と割り込み使える
・リアルタイムクロック(RTC):RTCA0タブ
リアルタイムクロックを使用するにチェック
周期割り込み 割り込み周期を適当に設定(デフォルト2秒、1秒にしたければ設定変更)
・PWM(デューティ値を変化):TPUタブ TPU0
このチャンネルを使用するにチェック
動作モード:PWMモード2
カウンタ要因:TGRDのコンペアマッチ
カウントソース、タイマー動作の秒数は適当に
(スクロールして)
TGRA
レジスタ初期値:適当に
アウトプットコンペア TIOCAnの 端子 0 コンペア 1 カウンタ 0
(スクロールすると)
波形が出る
・A/D変換(S12AD):S12AD0タブ
このユニットを使用する
使用するユニットだけチェック
変換開始トリガ ソフトウェアトリガ
割り込み A/D変換終了後にするならチェック
(2-3)以下の操作を行って、デバイスドライバ生成
メニュー→「ツール」→「ソースの生成」
メッセージが出たら
メニュー→「ツール」→「e2studioプロジェクトの設定」
ここで、セクションから、何かを除け、アドレスを、なんどかD0にしろなどの指示が出る
(3)e2studioに戻って、以下のことを行う
(3-1)リンカーオプションの設定
メニュー→プロジェクト→プロパティ
出てきたダイアログ
(左)C/C++ビルド→設定→ツール設定→Linker→セクション
(2-3)で出てきたものの除去、アドレス変更してOK
(3-2)ソースコードの変更
hardwareSetup.cの修正:初期化を行う
プロジェクト名.cの修正:main()の記述
(3-3)ビルド
メニュー→プロジェクト→すべてビルド をすると、すべてビルドしてしまうので、
プロジェクトを右クリック→右メニュー→ビルド
すればいいかも
※ビルドが成功すると、実行できる
(4)ボードを差し込み、e2studioでデバッグ実行
(4-1)ボードをUSBケーブルでつなぐ
→もっと前につながないといけないかも?初めからつないでた。
(4-2)デバッガで実行
プロジェクトを選択して右クリック→右メニュー→デバッグ→Renesas GDB なんとかかんとか
パースペクティブ切り替える旨でるのでOK(はい?)
再開(緑の四角に三角形)ボタンを2回クリック
→ボードから使えるようになる
中断ボタン()で中断させて、変数のところにマウス持って行って値見れる
終了(■)で終了
(4-3)プログラミングに戻る場合は、右上の「C」のアイコンをクリック