はじめに
小さな格安マイコンということで興味を持ち、以前に購入したLPC810ですが、当時は開発環境を整える敷居が高いように感じ、諦めて暫く放置していました。しかし、大学の授業で無償のオンライン開発環境が手軽に利用できることを知り、今回はLEDの点滅まで試してみました。LPCXpressoは使いません。書き込みに必要なのは汎用的なUSBシリアル変換モジュールだけという点も助かります。あまりメモリのサイズは大きくないため、プログラムのサイズを小さくするなどの工夫は必要ですが、勉強になりそうです。
動作確認環境
- Windows 11 Home 22H2 (22621.3007)
- Keil Studio Cloud 1.7.14
Keil Studio Cloud
mbedコンパイラの後継に当たるオンライン開発環境です。アカウントを作成すると無償で利用できます。今回はLPC810を使いますが、公式ではサポートされていないので少し注意が必要です。まず、ターゲットをNXP LPC800-MAX
に変更します。次にこちらで提供されているパッチファイルを後述するプログラムファイルと同じディレクトリに置きます。後はビルドして成功すると自動的にバイナリファイルがダウンロードされます。
プログラム
8番のピンに接続したLEDを点滅させます。1番、3番、4番のピンを使う場合は初期設定が必要になるみたいです1。まず、普通に標準ライブラリ関数を使用したところ、プログラムファイルのサイズは2KBとなりました。
#include "mbed.h"
DigitalOut led(P0_0); //8番のピンを出力に設定
int main() {
while (1) {
led = !led; //LEDの点灯と消灯を切り替え
wait(0.1); //0.1秒待つ
}
}
次に直接レジスタを操作することで軽量化しました。また、wait_ms
を使うことで少しだけ軽量化できるみたいです。プログラムファイルのサイズは972Bとなりました。
#include "mbed.h"
int main() {
LPC_GPIO_PORT->DIR0 = (1 << 0); //8番のピンを出力に設定
while (1) {
LPC_GPIO_PORT->NOT0 = (1 << 0); //LEDの点灯と消灯を切り替え
wait_ms(100); //0.1秒待つ
}
}
書き込み方法
まず、ダウンロードしたバイナリファイルを用意します。次にUSBシリアル変換モジュールとLPC810を以下のように接続します。LPC810はVSSとVDDのピン配置が特殊です。0.1uFのパスコンも付けました。3.3Vで駆動します。5番のピンをGNDに落とし、電源を入れると書き込み可能な状態で起動します。
書き込みに必要な実行ファイルはこちらからダウンロードできます。CUIで操作します。FlashMagicを使う方法だとバイナリファイルをHEXファイルに変換する手間があるため、今回は使いません2。コマンドプロンプトを開き、以下のようなコマンドを実行します。ここで、USBシリアル変換モジュールが接続されたCOMポートとバイナリファイルのパスを指定します。
lpc81isp.exe port=COM3 blink.bin
書き込みが完了するとターミナル上に完了メッセージが表示されます。後はUSBシリアル変換モジュールを外し、5番のピンを開放してから電源を入れ直すと書き込んだプログラムが走ります。今回の場合はLEDが素早く点滅するはずです。
おわりに
割と放置していたLPC810ですが、無事に動かすことができたので良かったです。しかし、残念ですが、現在では廃番になっているみたいです。