RL78/G1x開発役立ち4ドキュメント

2014/6/20ルネサス発行のRL78/G1x開発に役立つ資料を4つお知らせします。このページ一番下、その他に分類されている資料で、NEW!マークが付いた以下4タイトルです。

1.RL78ファミリ用CコンパイラCA78K0R SADDR領域とCALLT命令の使用

SADDR領域とCALLT命令の効果を解りやすく解説しています。

販売中のRL78/G1xテンプレートも、SADDR領域は使っていますが、CALLT命令は、コードサイズは小さくなるものの、速度が遅くなるので使いません。RL78/G1xは比較的大きなROMを持つマイコンなので、コードサイズよりも速度を優先して設計したためです。

有効なSADDR領域ですが大きさに限りがあるので、コンパイルオプションのROM/RAM使用量を表示し、上限に近い場合には、配置変数の選択も必要でしょう。

2.RL78ファミリ用CコンパイラCA78K0R データフラッシュへの定数の配置方法

ROM、RAM、データフラッシュの3領域を持つRL78/G1xデバイスで、データフラッシュ領域へconst定数を配置する方法を記載しています。

RL78/G1xテンプレートは、データフラッシュライブラリを使い4KBデータフラッシュ領域をEEPROM的に使っています。このような使い方が不要な場合には、巨大テーブルの定数配置などで解説の方法も使えそうです。

3.スタック領域の変更方法

4.リンク・ディレクティブの説明

どちらの資料もROM、RAMへのセグメント配置に関する基本的な解説です。文章や図にすると、説明が長くなるのが欠点ですが、まとまっているので理解し易いでしょう。

RL78/G1xテンプレートでは、コンパイラ領域がRAM内で連続するように、データフラッシュライブラリの占有領域を決めるリンク・ディレクティブ設定を行っています。また、作成する関数間インタフェースは、基本的に関数引数を使わずRAMを使います。従って、関数単独のデバッグが容易で、スタック使用量も引数利用に比べ少ないのが特徴です。結果として、スタック領域の配置は、コンパイラにお任せでも問題なく動作します。

RL78常設セミナテキスト改版

2014年5月30日発行のルネサスサポート情報 vol.197で、ルネサス常設セミナテキストの改版がレポートされました。レポートでは、「新規公開」とありますが、ダウンロードして旧版と比較した結果を示します。

セミナテキスト改版内容

コース名 レポート記事 旧版との比較結果
R8Cマイコンコース テキスト新規公開 2012年3月21日 Rev. 2.20と同じ
RL78マイコンコース テキスト新規公開 2013年12月18日 Rev. 1.30へ改版
RL78コンパイラコース テキスト新規公開 2014年3月13日 Rev. 1.07へ改版
RL78リアルタイムOSコース テキスト新規公開 2014年3月31日 Rev. 1.02へ改版

※R8Cマイコンコーステキストは、改版内容が不明で、公開テキストは前版と同じでした。

テキストの変更履歴がないので、具体的にどこを変更して改版したのかは不明です。しかし、どのテキストも内容が濃く、一読に値します

テキストですので、重要項目を1~10まで記載しています。初心者には、読むだけで大変で、理解にかけられる労力が不足することも多いと思います。そんな時は、各テキストの最重要箇所のみを抽出したコレに先ずザット目を通してください。特に、コンパイラコースのその1~3を理解した後に、テキストに戻ると理解が捗ると思います。

テンプレート活用のマイコン開発

限られた時間で効率的にマイコンを習得するには、手軽に用意できる開発環境と、テンプレートを活用するのも一つの方法です。ワードやパワーポイントには多くのテンプレートが提供されますが、組込みマイコンのテンプレートは少ないようです(サンプルソフトは、あくまでサンプルでテンプレートとは、別物です)。

そんな時は、販売中のRL78/G1xテンプレートを活用下さい。業務に使えて、テキストの重要箇所エッセンスをプログラムへ盛り込んだテンプレートになっています。世界標準のARM 32ビットマイコンLPC8xxテンプレートも販売中です。

LPC8xx使用ライブラリとプログラムサイズ

LPC8xxには、2種類ライブラリがあることは以前記載しました。さらにROMにもI2CやUARTなどのライブラリがあるので全部で3種類ですが、今回は、最初の2種類、LPCOpenライブラリと従来ライブラリ(LPCCloseと呼ぶ)で、どの程度Flashプログラムサイズが変わるかを示します。

新規Cプロジェクトサイズ

LPCXpressoでLPC820新規Cプロジェクト作成直後のDebugビルドでのプログラムサイズが下記です。コンパイル最適化などは行っていません。つまり、ブート処理のみ行い、何もしないCプログラムです。

プログラムサイズ CRP有効 CRP無効
LPCOpenライブラリ使用 1952バイト 1540バイト
LPCCloseライブラリ使用 1140バイト 728バイト

※LPCXpresso_7.1.1_125で実施。2014/05/25現在、最新版は、LPCXpresso_7.2.0_153。

CRP: Code Read Protectionとは、Flashプログラムの読取りに制限やプロテクトをかける機能で、この機能を有効にすると約400バイト必要になることが判ります。製品出荷時には必要になる機能でしょう。

何もしないプログラムのFLASH専有率

CRP有無と使用ライブラリで4つの組合せを示しました。LPC8xxデバイスのFlash容量に対するこれらの占有率を示します。

何もしないプログラムのFLASH専有率(%)  専有率
LPCOpen CRP有効 48% 24% 12%
CRP無効 38% 19% 9%
LPCClose CRP有効 28% 14% 7%
CRP無効 18% 9% 4%

 

8ピンのLPC810はFlash容量が4Kバイトですので、LPCOpenライブラリでCRP有効にすると1952/4096=48%のサイズを「何もしないプログラム」で専有します。Cortex-M0+マイコンは、同一処理では他マイコンよりも小さいコードを生成しますが、それでも少ない残り量です。追加開発する処理量にもよりますが、30%以下を一応の目安とすると、LPC810にはLPCCloseライブラリを使う方が良さそうです。

一方、LPC810以外は、LPCOpenライブラリが使えそうです。LPCOpenライブラリは、評価ボード別やマイコン別の層構成になっていますので、LPCCloseに比べオーバーヘッドがある分、サイズが大きくなります。しかし個人的には、標準Cライブラリに近く洗練された感じがして好きなライブラリです。また、オープンな場で、使い方やバグ情報があるのも良い点です。勿論、層構成ですので、別マイコンやボードへの移植性も高いです。今後は、このLPCOpenライブラリが主流になると思います。

LPC8xxテンプレートをLPCOpenライブラリで開発したのは、このような経緯がありました。

I2C接続EEPROMの使用シナリオ

前回の記事で問題にしたLPC8xxテンプレートI2CのAPIは、「LPCOpen」と「内蔵ROM」両方を使うことに致しました。UARTはLPCOpneを使うとデバイス最高速度30MHzで動作しますので、これでLPC8xxテンプレート開発を続けます。

 

さて、I2CのAPIを使ってテンプレートにどのような使用例を追加すべきかを検討しました。接続デバイスは、「I2Cインタフェースで最も利用が多いEEPROM、動作は、ページライト/シーケンシャルリード、保持データは、マイコン再起動時に必須となるデータ、例えば、電源断時のスイッチ状態」などとします。

これは、RL78/G1xテンプレートのデータフラッシュ使用例と同じです。RL78/G1xは、4KBのデータフラッシュを内蔵しており、様々な使い方ができます。私は、このデータフラッシュにEEPROM的な使い方を想定し、RL78/G1xテンプレートに実装しました。

LPC8xxには内臓データフラッシュはありませんが、IAP: In-Application Programmingという64バイトのページ(ページについては後で示す)を持つROM書込み/消去の機能があります。これを使うと、EEPROMの代用ができます。が、ROM自体をプログラムで書換えるのは、少し抵抗があります。従って、LPC8xxテンプレートにはIAPを実装しない予定です。代わりに、応用範囲の広いI2CにEEPROMを実装します。

I2C接続のEEPROM仕様

EEPROM仕様
EEPROM仕様

I2C接続の代表的なEEPROM仕様を示します。容量が大きくなると、ページデータ数が16、32、64、128バイトへ増えます。ページとは、纏めてライトする時の単位です。EEPROM書込み保障回数は、10万~100万回ですので、1バイト毎にライトする代わりに、ページ単位にデータを纏めてライトすると、ライト回数を減らせます。しかしその分、ページライト後に待ち時間も発生します。

リードは、最後にライトしたアドレスのデータを読む、カレントアドレスリードが基本です。任意アドレスリードは、ライトデータを0にしたダミーライトを行い、カレントアドレスを再設定した後で通常リードをします。カレントアドレスから、最大アドレスまでのシーケンシャルリードが可能です。

EEPROM使用シナリオ

これらリード/ライト方法や仕様を俯瞰すると、EEPROMに保存するデータは、ページ単位が適していることが判ります。また、使い方は、マイコン起動時、最後にEEPROMにページライトしたデータをリードしマイコン運用、これらデータ更新時に、更新データを一塊のページ単位でEEPROMへライトし、再起動に備えるなどを想定します。そこで、このシナリオでLPC8xxテンプレートに実装します。

RL78/G13とRL78/G14の推薦開発ボード

RL78/G1x開発用に最適な市販ボードを見つけましたので紹介いたします。

RL78/G1x開発推薦ボード
RL78/G1x開発推薦ボード

秋月電子通商の、印)NGX社BlueBoard-RL78/G13_64pin、3800円です。LCD、UARTドライバ×2、ADC用ポテンショメータ、LED、ブサー、E1インタフェースなどが実装済みで、単独のRL78/G13CPUボードにブレッドボードなどでLCDやUARTドライバを追加するよりもお得です。また、RL78/G14も同じ基板で動作します。NGXサイトではRL78/G14用BlueBoardも販売中ですが、自信がある方は、ご自分でCPU載せ替えもできるでしょう。

1点だけ残念なのは、LCDインタフェースが、使用頻度の高い4ビットインタフェースではなく8ビットインタフェースになっている点です。実装マイコンが64ピンなので余裕があるためでしょう。弊社RL78/G1xテンプレートは4ビットインタフェースで開発しましたが、この8ビット版へも、sfr設定、LCD初期設定、LCDコントローラへ書込みの3関数の一部のみを変更して対応できました。

テンプレート最大動作クロック設定の目的

LPCOpenライブラリのスタートアップ処理変更

スタートアップ処理は、本来変更不要です。但し、唯一変更したい箇所が、デフォルト24MHzのシステム動作クロック設定:SystemSetupClocking()です。テンプレートは、CPU最大速度の30MHz動作にします(目的は、後述)。このシステム動作クロックは、ユーザプロジェクト処理のHdwInit()で再設定も可能です。しかし、一旦設定したクロックを再度設定するのは、なんとも気持ちが悪いです。このクロックはマイコン全ハードの動作を決めるので、SleepやPower_Downで止める以外は、安定発振が無難だからです。

LPCOpen APIとCubeSuite+コード生成の違い

LPCOpenサンプルソフトのシステム動作クロック設定関数SystemSetupClocking()を観ると、API関数に、やたらと1や2などの数値パラメタを代入しています(L103と112)。これは、CubeSuite+コード生成ではGUIで設定するパラメタを、LPCXpressoでは、API関数に直接代入して動作を変えるからです。GUIか、パラメタ代入か、どちらが簡単かは、意見の分かれるところですが、私はGUIが好きです。パラメタの場合は、マニュアルを読みながら値を設定する必要があるからです。

SystemSetupClocking()
SystemSetupClocking()

私のようなGUI好きな人向きに、システム動作クロックのパラメタを算出するExcelツールがあります。

システム動作クロックパラメタ算出ツール

Excelツールの使い方
Excelツールの使い方

Excelツールは、内臓PLLのMain CLKとFinを設定すると、システム動作クロック設定に必要となるMSEL、SPEL、DIVの3パラメタを算出します。2ページ構成で、1ページ目にPLL outのMain CLKとFinの入力セルがあります。ここへ60MHz、12MHzを設定します。するとPLLが安定動作する(緑エリア)MSELとPSELが4,1と判ります。また30MHz のSystem Clockには、SYSAHBCLKDIV=DIVのラジオボタンで2を選択すれば良いことも判ります。マニュアルを読むよりも簡単です。算出パラメタをAPI関数へ代入して、デバッガでSystemCoreClockをプローブすると、30MHzに変わったことが確認できました。

SystemCoreClockの確認
SystemCoreClockの確認

システム最大動作設定の目的

テンプレートは、システム最大動作速度の30MHzで開発します。これは、最短で処理を行うためです。そして、処理後はCPUをSleep(RL78/G1xはHALT)させます。この時は、周辺回路だけが動作します。Tick割込みでCPUのSleepは解除され、再び同じ動作を繰り返します。CPU最大速度とSleepの時間割合で最終的な消費電力が決まるわけです。つまり、CPUは時分割動作します。

例を示します。表示デバイスとして良く使うLCDの初期化には、数msec以上の待ち時間が必要ですが、この時間をCPUが待つのはムダです。そこで、この間はSleepし、数msec経過後に起き上がってLCD処理を行うなどです。これは、RL78/G1xテンプレートに添付したLCDアプリ例で実施しています。

テンプレートを当該アプリへ適用した後に消費電力を調整します。LPC8xxの場合は、Excelツールを使ってシステム動作クロックを徐々に下げ、時分割処理が達成でき、かつ、消費電力も低くなるシステム動作クロックを探します。システム動作クロックを下げればCPU消費電力は下がりますが、逆に処理時間は長くなりSleepが短くなるので、この方法で、両者のバランスがとれたクロック速度を探します。

RL78/G1xテンプレートの場合も同じです。CubeSuite+コード生成は、GUIで動作クロック速度を選択し、コード生成をクリックすると、ユーザプログラムに上書きされるので、作成ソースをいじることなく簡単安全にクロック速度の変更ができます。やはりGUIの方が楽ですね。

携帯やスマートフォン搭載のマイコンは、バッテリを長持ちさせるために、あらゆる方法を駆使して消費電力を下げる工夫をしています。ここで示したシステム動作クロックを下げるのも、その方法の1つです。

システム最大動作クロックをテンプレートに適用した後にアプリを開発すれば、消費電力を削減する方法が明確になりますし、その方法も簡単です。後は、この方法を成功させるように、CPU時分割処理向きのアプリを開発すれば良いのです。

LPC8xxの2種類のAPIライブラリ

LPC8xxのサンプルコードには、2014年2月現在、2種類の既成APIライブラリ(ドライバ)があります。

1. LPCClose:LPCXpresso_7.0.0_92付属のNXP_LPC8xx_SampleCodeBundle.zip

2. LPCOpen:LPCOpenサイトのLPCOpen-LPCXprersso LPC812, LPC800-MAX/LPCXpresso, Keil_IAR

両者の違いは、2が3階層ライブラリ(私は下図のように理解)、1は、従来からある階層なしのライブラリです(詳しくは、コチラ)。LPCCloseは、LPCOpenに対して、私がかってに付けた名前です。

LPCOpenの目的

LPCOpenの構造
LPCOpenの構造

 私は参照してもLPCOpen理解度はイマイチなのですが、目的は周辺回路のライブラリ汎用化、ひいてはCライブラリのような標準化とOpen開発によるAPIバグ取り、CMSISのドライバ版と理解(想像?)しています。

既成API利用のプログラミング

一方、LPCClose側のライブラリ評判は、良くありません。既成API利用のプログラミングは歴史が浅く、ドライバ側の改版も順次進むでしょう。また、いずれのサンプルもLPC8xxの最大特徴、スイッチ・マトリクス・ツール(ver1 20130602版):SMTの出力を使ったコードはありません。SMT完成が2013年6月なので、サンプルコード開発に間に合わなかったのが原因と思います。が、現状でもSMT出力をLPCOpenソースへ代入するとコンパイルエラーが生じるなど、新しい製品なのでしかたがないのでしょう。ソフト開発を複数人で行うと必ず生じる副作用だと思います。

LPCOpenの選択

ポイントは、既成ドライバの改版時、ユーザ開発部分に影響が少ない(理想はゼロ)構成にしておくことです。LPCOpenヒストリーを観ると、現在のv2.01までに5回改版されています。

このような状況ですが私は、LPCOpenライブラリを使います。バグ取りの進み具合がOpen開発なので早そうなのと、Cライブラリの雰囲気があるからです。その分、LPCCloseに比べ、解読しにくい箇所もありますが、組込みマイコン標準周辺回路ライブラリを夢見て活用したいと思います。

ARMマイコンの選択方法

LPC8xxの特徴

コア差別から、周辺回路差別へシフトしているARMコアマイコン群。その中で8/16ビット市場を狙う低価格、低消費電力な32ビット最新コアCortex-M0+を搭載したLPC8xxの差別化周辺回路は、下表です。最も特徴的なスイッチ・マトリクス(SWM)を解説します。

LPC8xxの差別化周辺回路 概要
スイッチ・マトリクス IOピンに内臓デジタル回路の入出力を割当てる機能。IOピン数≦内蔵回路数時に有効、かつ、ピン配置自由度大。
アナログ・コンパレータ ADコンバータの代わりにコンパレータ搭載。正負入力可能。
ステート・コンフィギュラブル・タイマ:SCT 通常タイマ機能に加え、状態遷移図からステートマシン生成もできるタイマ。
ROM API(I2C、UART、Power Control等) ROMによる(周辺回路の)API提供。
LPC8xxブロック図
LPC8xxブロック図

スイッチ・マトリクス(SWM)

トラ技2014年2月号掲載のLPC810は8ピンDIPです。電源(VSS/VDD)とデバッグインタフェース(SWDIO/SWSCL)を除くと、4ピンだけがGPIOとして使えますが、内臓デジタル周辺回路は4種以上あります。これら周辺回路は、内臓スイッチ:SWMでGPIOの任意ピンに接続が可能です。もちろん、4ピン以上の接続はできませんが、任意ピンに配置できるので、基板化する時にアートワーク設計者にも歓迎される機能でしょう。

スイッチ・マトリクスの接続(UM10601より抜粋)
スイッチ・マトリクスの接続(UM10601より抜粋)

このSWMは、既存8/16ビット機のアプリケーション置換えを狙ったLPC8xxの特徴が最も現れた機能ブロックです。パッケージ構成は、8/16/20ピンで少ピンですが、SWMのおかげで、未使用ピンが少なく使い易い32ビットマイコンになると思います。タイマIC555にも追加RC無しで置換え可能です。

ARMマイコンの選択方法

このようにARMコアマイコンは、同じコアでも周辺回路に差があるマイコンが各社から発表されます。また、デジタル周辺回路だけでなく、アナログ周辺回路の実装も増えてきました。ARMマイコンの選択は、ARMコアの特徴と、各社が差別化のために実装した周辺回路による特徴、この2つを理解した上での選択が重要になります。従来の汎用性よりも、どこに、どのように使うかというよりアプリ重視のマイコンが発表されるからです。

RL78/G1xテンプレートの移植(その3)

仮想お客様開発ボード:BlueBoard-RL78/G13_30pin-Hへのテンプレート移植の3回目は、その2で示した移植手順3以降を解説します。

レジスタ・バンク設定

マイコンで複数処理をシステムとして上手く動作させるポイントの1つが、割込み処理です。この割込み処理を効率的に使うために、レジスタ・バンクの設定をします。詳しくは、コチラをご覧ください。移植ボードで使うレジスタ・バンク設定は、テンプレートの設定をそのまま使います。

userdefine.h修正

移植ボード回路図からテンプレートのuserdefine.hポート番号の論理名定義を変更します。

userdefine.h変更
userdefine.h変更

移植ボード動作

移植ボードの動作は、1. 電源ON後、uart1へ起動メッセージ出力、2. uart1経由で1文字コマンドを受信し、コマンドに応じてA:ADC値をuart1へ出力、B:ブザートグル出力、L:LEDトグル点滅、3. User SW押し下げでLEDとブザーのトグル動作とします。

移植ボードの動作
移植ボードの動作

テンプレート移植例なので、簡単な動作にしました。関数間の入出力データは、マイコンRAMを使っていますので、関数間の独立性や単体試験は容易です。

テンプレートの移植機能

Version2テンプレート提供中の全機能と、開発ボードへ移植する機能を示します。User SWは、INTP1に接続しているのでコード生成のINTP1割込み処理、Buzzerは自励式なので、LEDドライバで対応します。

ファイル名 機能概要 備考 ボード移植
main.c 起動処理 アプリとドライバ起動 あり
userdefine.h ユーザ追加マクロ ハードウエア割付修正 あり
uart.c uart1ドライバ 受信コマンド解析修正 あり
sw.c swドライバ チャタリング対応済み なし
led.c ledドライバ ブザー出力へ修正 あり
adc.c adcドライバ ノイズ対応済み あり
lcd.c lcdドライバ HD44780互換品対応 なし
pfdl_user.c データフラッシュドライバ RL78_FDL_LIB_VERSION_T04_REN: V1.05使用 なし
pfdl.h ライブラリヘッダ なし
pfdl_types.h ライブラリ追加マクロ なし
pfdl.lib ライブラリ本体 なし
LcdTest.c Lcdテスト用アプリ 1s周期起動 なし

 

動作テスト

移植ボードをパソコンに接続し、コマンドを送受信して動作中のボードを示します。

テンプレート移植動作
テンプレート移植動作

RL78/G1xテンプレートのメリット

BlueBoard-RL78/G13_30pin-Hを仮想お客様開発ボードとし、テンプレートの移植手順と、その方法を説明しました。テンプレート移植が簡単であることがお判り頂けたと思います。殆どがCubeSuite+の再設定と、ハード割付の変更です。ボード動作に関しては、動作に応じた追加や修正は必要になります。しかし、テンプレートで枠組みが決まっているので簡単です。処理の入出力データは、RAM経由なので、他のアプリやドライバの動作タイミングを考えずに、単独の動作タイミングで開発できるからです。

新規ボード開発時には、ボード周辺ハード/ソフトの単体テストソフトを作り、徐々に結合し、最後にシステム全体として動作させます。本テンプレートを開発当初から活用頂けると、関数間データ送受にRAMを使っていること、アプリやドライバ起動が時分割で複数あること、割込み処理効果を上げるバンク・レジスタ設定があること、などの本テンプレートの特徴を活かして、単体テストや結合テストも容易で、かつ、テストソフトそのものも活用できるので、実用プログラムの早期開発に役立ちます

メリットは、早期開発だけではありません。開発から時間がたってプログラムを見直す時に、プログラム解読が容易です。時間経過するとフローチャートなどに も目を通しますが、結局、動作理解には、ソースの解読が必要です。この時、テンプレートで枠組みが決まっているのと、そうでないのとでは、解読の困難さが 大幅に異なります。枠組がシンプルで、関数間がRAMで分離される本テンプレート方式は、単純なソースで記述できるので解読も簡単です

RL78/G1xテンプレートの移植(その2)

RL78/G1xテンプレートの移植手順一覧を示します。今回は、1~2まで解説します。

移植手順一覧

  1. CubeSuite+で、マイクロコントローラ変更(M)… 実行
  2. コード生成(設計ツール)再設定
  3. コード生成出力に使用レジスタ・バンク追記(デフォルトは、全てRB0のため)
  4. フラッシュライブラリ使用時は、リンク・ディレクティブ変更(コンパイラ領域を連続して広く取るため)
  5. userdfine.h修正
  6. 移植ボードの動作処理追加

G13Stick(サブプロジェクト)のテンプレートが移植ボードに最も近いので、これを使い移植します。

マイクロコントローラ変更:R5F100LE からR5F100ADへ

移植ボードのマイコンは、R5F100AD(30pin):RL78/G13 (ROM:48KB)_30pinで、テンプレートのR5F100LE:RL78/G13(ROM:64KB)_64pinと異なるので、マイクロコントローラ変更を行います。R5F100LE上で右クリックすると、マイクロコントローラ変更(M)…メニューが現れますので、R5F100AD(30pin)へ変えます。変更後は、サブプロジェクトのコード生成(設計ツール)が初期化され、「先に端子割り当てを設定してください。」のメッセージが出力ウインドに表示されます。

マイコン変更
マイコン変更

コード生成(設計ツール)の再設定

クロック発生回路の「箱アイコンが開いている」のは使用中を、「閉じている」のは未使用を示します。マイコン変更直後は、箱アイコン横の!マークで端子割当てが必要であることが判ります。また、ウオッチドック・タイマの箱アイコンも開いているので、WDTがデフォルトで使用されることも判ります。

コード生成の再設定
コード生成の再設定

コード生成のパラメタは、全てGUIで設定するのが本来の使い方です。設定箇所が多く、間違いなく設定するのは大変ですが、GUIで変更や修正が簡単にできるのがメリットです。しかし、多くのパラメタをプロジェクト作成毎に設定するのは面倒なので、既成ファイル(xyz.mtudあたり)から必要部分のコピー&ペーストで作成すべくいろいろ試行しましたが、失敗でした。別の方法として、(サブ)プロジェクト毎コピーしてプロジェクト名を変更する方法を以前に示しました。今回は、仮想開発ボード付属プロジェクトのコード生成GUIを横目で見ながら、真面目(?)にこのパラメタを設定します。

※A/Dコンバータは、移植基板付属のコード生成では未使用です。しかし、初期設定などメインプログラムで設定しており実際は使用しています。私は、コード生成を使って設定しました。

コード生成レポート

設定した多くのパラメタがオリジナルプロジェクトと同じかを確認する方法に「コード生成レポート」が使えます。このレポートは、コード生成タブの表示中にのみファイル(F)メニューに表示されるコマンドで、全パラメタがHTML形式で出力されます。オリジナルと両方出力して、エディタで比較すれば、パラメタの一致確認が容易です。

コード生成レポート
コード生成レポート

移植ボードの付属回路とコード生成

移植ボードの付属回路を示します。UART0はD-Subコネクタが未実装なのでUART1を使います。コード生成(G)をクリックして、移植ボードのAPIを生成します。

BlueBoard Peripheral Schematic label CPU pin CubeSuite+ port
User LED LED 20 P16
Buzzer BUZZER 15 P31
User Switch INTP1 17 P50
Reset Switch NRST 6 RESET
ADC ANI2 29 P22
UART0(コネクタ無し) RXD0 25 P11
TXD0 24 P12
UART1(コネクタ有り) RXD1 2 P01
TXD1 3 P00