DIP で唯一実用になる(?) ARM Cortex-M0 マイコンです。SRAM が 4KB しかないのが心許ないですが、秋月で現在180円と、性能の割に激安です。

32bit ARM なので、32bit 演算が多少出てくるような場合は AVR より圧倒的に良い選択そうです。(FPU はありませんが)。また mbed は Arduino よりもライブラリデザインがマトモという印象があります。

platformio でコンパイルして、シリアルアダプタ経由で ISP 書きこみするというのを試しました。フレームワーク(ライブラリ)としては mbed を使っていますが、mbed の開発環境は使っていません。

platformio での開発

platformio.ini を以下にようにして

[env:lpc]
platform = nxplpc
framework = mbed
board = lpc1114fn28
build_flags = -std=c++1y

main.cpp を以下にようにしました。

#include "mbed.h"

DigitalOut led(LED1);

int main() {
	while(1) {
		led = 1;
		wait(0.5);
		led = 0;
		wait(0.5);
	}
	return 0;
}

この状態で platformio run をすると .pioenvs/lpc/firmware.bin にコンパイル済みバイナリができます。

platformio は mbed の開発環境を前提としているようで、upload では単に upload_port 先のディレクトリにコピーをしようとします。今回はシリアル経由で書きこむので、platformio 経由での upload は使いませんでした。

ピンアサイン

https://developer.mbed.org/platforms/LPC1114FN28/ このページを見るのが一番良いようです。

上記コード中で指定している LED1 は左下の dp14 になります。

書きこみ

書きこみツールは lpc21isp を使うのが一番簡単なようです。展開して make するだけで OS X でも普通に動きました。

https://sourceforge.net/projects/lpc21isp/files/lpc21isp/ からダウンロードできます。

以下にような感じで書きこめました。115200 は書きこみ時のボーレート、12000 はMCUの動作周波数をkHz単位で指定するようです。内蔵RCは12MHzなので12Mhzを指定しています。が、mbed 実行時は逓倍して48MHzで動いているようなので、どっちを指定するのかよくわかりません。

lpc21isp -control -bin .pioenvs/lpc/firmware.bin /dev/tty.usbserial-A50285BI 115200 12000

ここでは -control を指定しています

         -control     for controlling RS232 lines for easier booting
                      (Reset = DTR, EnableBootLoader = RTS)

となっており、この通りにシリアル変換の DTR を nR (RESET) 、RTS を dp24 に接続することで、自動リセットしてISPモードへ移行して書きこめます。冒頭の写真の通りの配線です。

追記:シリアル通信を行う

上記の方法だと、普通にシリアル通信を行おうとするとRTS/DTRまわりの挙動によってリセットが発生してISPモードに入ってしまうことがあります。なので普通に screen などでシリアル出力を見ることができません。これは RESET の配線を切れば問題ないのですが面倒くさいところです。

実はこれもlpc21ispを使って以下にようにすると、配線を変えずにシリアルモニタができるようです。

lpc21isp -termonly -control /dev/tty.usbserial-A50285BI 115200 12000

コード例

#include "mbed.h"

Serial serial(USBTX, USBRX);
DigitalOut led(LED1);

int main() {
	serial.baud(115200);

	while(1) {
		serial.printf("Hello, World!\n");
		led = 1;
		wait(0.5);
		led = 0;
		wait(0.5);
	}
	return 0;
}

ref.

  1. トップ
  2. tech
  3. LPC1114 LPC1114FN28 / mbed 開発を platformio を使ってやる

関連エントリー

▲ この日のエントリ