AVRマイコンもいいんですが、mbedでも使われているARMマイコンにも色々と魅力があります。ARMである事と、AVRの8bitマイコンよりもパワフルなのに、AVR8bitマイコンと同じくらい電子工作で使いやすいという点です。演算用に一ついかがでしょうか。
今回は、FT232RLを使ってARMライターを構築してLPC1114FN28に書き込んでLチカするまでを記事にします。プログラムのコンパイルをよく使われるオンラインコンパイラではなく手元で実現していたり、ライターソフトも糞みたいなGUIではなくCLIのツールを使っている点が特徴的でしょうか。
プログラムをコンパイルする
まずはプログラムをコンパイルします。
$ platformio init --board lpc1114fn28
$ cat > src/test.cpp
#include "mbed.h"
DigitalOut myled(LED1);
int main() {
while(1) {
myled = 1;
wait(1.0);
myled = 0;
wait(1.0);
}
}
$ platformio run
拡張子がC++だったりccだったりするとコンパイルが通りません。Arduinoとはだいぶん書き方が違って違和感がありますね。これで、.pioenvs/lpc1114fn28/firmware.bin
に bin がはき出されます。
FT232RLを使ったARMライター
LPCマイコン(と呼ぶべき?)は、AVRマイコンに比べて素直な点が一つあって、最初からブートローダーが書き込まれてます。シリアルを使ってbinを流し込む事でプログラムが動作するようになります。
回路
http://www.nxp-lpc.com/lpc_boards/mbed/note/note3.html の記事の途中にある回路図そのままを組みました。VCCにLEDを入れたりという工夫はしています(電源が通ればLEDが光る)。
ライターソフトウェア
FlashMagicとかいうツール、GUIだしインストールが面倒だったり色々糞いので、やはりCLIのツールが正義です。morecat_lab » lpc21isp からLPC1114を使う を参考にして、lpc21isp を入手してコンパイルしましょう。(例によってPlatformIOでどうやればlpc21ispが使えるかがわからなかった…)
書き込み
lpc21isp -control -bin .pioenvs/lpc1114fn28/firmware.bin /dev/cu.usbserial-******* 115200 12000
/dve/cu.usbserial-**** は、OSに認識されたFT232RLのデバイス名です。次の数字は115200bpsで、最後の数字はKHz単位の周波数です。LPC1114FN28は、最大で50MHz位の外部クロックを取り付けることができます。今回は内部クロックでいきました。(内部クロック最大がいくつなのかは知らないけど、ググってたら12000の表記は見つけたからきっといけるはずと踏んでますw)。
ピンの仕様
公式 mbed LPC1114FN28 | mbed にピンのわかりやすい図がありました。
まとめ
- ARMのLPCマイコンはAVRマイコンとほぼ変わらない値段で、高速・高性能
- ARMライターはAVRライターよりも簡単
- コンパイルもライターソフトも、CLIでいける
- Arduinoは情報量やライブラリやサンプルスケッチの多さが魅力だけど、mbedも面白い…かもしれない
演算用チップとして使うといいかもしれないなーなんて考えています。それではごきげんよう