MCUXpresso IDE v11をLPC845 Breakout boardで試す

MCU:マイコン,LPCマイコンテンプレート,LPC8xx,ARMマイコン,Cortex-M0+,LPCOpen,IoTマイコン,BSP,SDK,LPC845

まとめ

NXPのMCUXpresso IDE v11.0.0 [Build 2516] [2019-06-05]を使い、LPC845の評価ボードLPC845 Breakout boardの動作を確認し、サンプルプロジェクト赤LED点滅を緑LEDへ簡単に変更できる、SDK:Software Development Kitメリットを示しました。

LPCOpenライブラリなどを使った旧IDEに比べ、SDKを使うMCUXpresso IDE v11は、より早く簡単にソフトウェア開発が可能です。また、IDE更新とSDK更新が別々なため、常に最新ドライバ、BSP:Board Support Packageでの開発ができます。これもSDKメリットの1つです。

SDKは、ソフトウェア開発速度を上げる専用ライブラリ集です。MCUXpresso IDE v11のSDKを習得し、効率的なソフトウェア開発に慣れる必要があります。
これには、実際に評価ボード専用SDKを作成し、サンプルプロジェクトへ変更/修正を加え、SDKメリットを実感するのが早道です。本稿で用いたLPC845 Breakout boardは、SDK習得に好適です。

LPC8xxをアップグレートしたLPC845(64KB Flash、16KB RAM)評価ボード:LPC845 Breakout boardは、タッチパッド+デバッガ付きで低価格(¥697)、少サイズ(65x18mm)です。このサイズならそのまま装置へ実装も容易です。現場での短時間制御系アップデートや修理交換などに応用できます。

LPC845 Breakout board

LPC845 Breakout board
LPC845 Breakout board(出典:LPC84X MCU TECHNICAL OVERVIEWへ加筆)

LPC8xxシリーズは、アップグレートしたLPC84xとコストダウンしたLPC80xの2方向へ発展しました(関連投稿:NFCを使うLPC8N04のOTA)。LPC845評価ボード:LPC845 Breakout board (Cortex-M0+/30MHz)を入手しましたので、最新のLPCXpresso IDE v11を使って動作確認します。

LPCXpresso IDE v11.0.0 [2019-06-05]

最新LPCXpresso IDEは、v11.0.0 [2019-06-05]です。旧IDEからSDK:Software Develipment Kit追加、Pin設定方法が変わりました。既に旧IDEを使い慣れた方は、SDK活用の新LPCXpresso IDE v11に少し驚きを感じると思います。

LPCXpresso IDE v11ダウンロードとインストール

LPCXpresso IDE v11のダウンロードとインストールは、普通のPCアプリケーションと同じです。旧IDEではインストール後、アクティベーション手順が必要でしたが、v11は不要です。

また、デフォルトではプログラム/workspace共に専用フォルダ:MCUXpressoIDE_11.0.0_2516へ展開されます。つまり、旧IDEと共存します。ストレージ使用量は多くなりますが、共存するので安心して新旧IDEを試すことができます。

インストール後、Help>Check for Updatesを実行しIDEの更新有無を確認します。

また、最初のMCUXpresso IDE v11起動時にセキュリティソフトが警告を出すことがあります。お使いのセキュリティソフトに応じて対応してください(筆者Windows 10 Pro 1903のAvastは警告を出しましたので、例外追加で対応しました)。

LPCXprsso IDE v11インストール起動画面
LPCXprsso IDE v11インストール後、最初の起動画面

SDK Builder

SDKは、周辺回路ドライバ、サンプルプロジェクト、評価ボードサポートパッケージ:BSPなどを含む開発支援ツールです(SDKユーザガイドはコチラ)。インストールしたMCUXpresso IDEとは別に、ネット上のSDK BuilderでLPC845 Breakout board専用SDKを作成します(要ログイン)。

SDK BuilderのSelect Development Boardをクリックし、LPC845BREKOUTを選択します。後は、Build MCUXpresso SDKをクリックすると、作成したSDKの圧縮ファイル:SDK_2.6.0_LPC845BREAKOUT.zipがダウンロードされます(2.6.0は版数)。
※評価ボードによっては、Amazon-FreeRTOS、Azure IoTなどのミドルウェアもSDKへ追加可能です。

SDK設定

ダウンロードしたSDK圧縮ファイルを、LPCXpresso IDEのInstalled SDKsビューへドラッグ&ドロップするだけでSDK設定は完了です。

LPC845 Breakout boardの赤LED点滅動作

SDKにはLPC845 Breakout boardの赤LED点滅させる、いわゆるLチカサンプルプロジェクトがあります。このLチカソフトで評価ボードの動作確認をします。

IDEのQuickstart Panelビュー、Import SDK example(s)…をクリックします。Lpc845breakoutを選択後Nextをクリックします。Examplesのdemo_appsを開くとled_blinkyが現れます。これがLチカサンプルです。

Led_blinkyに☑を入れFinishをクリックすると、workspace内にlpc845breakouty_led_blinkyプロジェクトが展開されます。

LPC845 Breakout boardのLED点滅サンプルプロジェクトのインポート
LPC845 Breakout boardのLED点滅サンプルプロジェクトのインポート

何も変更せずに、Quickstart PanelビューのBuildをクリックするとコンパイルが成功します。評価ボードをPCと接続しDebugのクリックでCMSIS-DAPプローブを自動認識し、デバッグモード画面へ変わります。

後は実行などで赤LEDが1秒毎に点滅する動作が確認できます。

SDKサンプルプロジェクトそのものの動作確認は、以上のように簡単です。SDKのメリットは、プロジェクト変更や機能追加が簡単にできることです。例を次に示します。

LPC845 Breakout boardの赤→緑LED点滅の変更

赤LEDへの制御を緑LEDへ変更するには、IDEをDevelop画面からPin画面へ切替えます。切替は、Open Pinsクリック、またはIDE右上のデバイスアイコンのクリックどちらでもOKです。

LED_LED点滅からGREEN_LED点滅変更のPin画面
LED_LED点滅からGREEN_LED点滅変更のPin画面

Pin画面は、プロジェクト使用中のピン名、周辺回路などがハイライト表示されます。

lpc845breakouty_led_blinkyプロジェクトの場合は、PIO1_2とGPIOで、IdentifierにLED_REDとあります。Identifireは、ソースコード中で使えるマクロです。LED_GREENやLED_BLUEが既にあるのも解ります。このように評価ボード実装済みのハードウエアが、あらかじめSDKで定義済みです。

赤LED→緑LED変更は、Pin11のLED_GREENに☑を入れ、表示されるPIO1_0選択肢からデフォルトのGPIO,PIO_1_0を選びます。次にUpdate CodeをクリックすればPin画面の変更がソースコードへ反映されます。

LED_RED点滅からLED_GREEN点滅へのピン変更
LED_RED点滅からLED_GREEN点滅へのピン変更

ソースコード表示のDevelop画面へ切替えるには、右上のDevelopアイコンをクリックし、L16をコメントアウト、代わりにL17の追記で赤→緑LED点滅への変更完了です。ビルドして緑LED点滅動作を確認してください。

LED_RED点滅からLED_GREEN点滅へのソースコード変更
LED_RED点滅からLED_GREEN点滅へのソースコード変更

このようにサンプルプロジェクトの変更は、SDKに評価ボード実装ハードウエアが定義済みなので、ボード回路図を確認せずにすぐにできます(回路図を確認すれば万全ですが…😅)。

さて、緑LED点滅動作が確認できた後にソースコードへ下記3か所の変更を加えてください。

BSPを使った赤LEDの点滅
BSPを使った赤LEDの点滅

これは、board.hで定義済みのBSPを使った赤LED点滅へのソースコード変更です。追記したLED_RED_INIT(0)とLED_RED_TOGGLE()は、board.hに記述があります。L80:GPIO_PortToggle()よりもL81:LED_RED_TOGGLE()の方が、ソースコード可読性が高いことが解ります。

BSPは、評価ボードで使用頻度が高い関数やマクロを定義します。BSP活用でソースコード可読性が高まりケアレスミスも減ります。BSPは、SDK作成時に生成されます。

LPC845 Breakout boardのSDK活用例を示しました。SDKメリットも実感できたと思います。

LPCOpenライブラリを使ったLPC8xxテンプレートも、新しいSDK対応へUpgradeする必要があるかもしれません。SDKは、新しい評価ボードから対応中なので、残念ながら少し待つ必要があるかもしれませんが…😅。