mdyのボケ防止ノート

なんでもすぐ忘れるので書き残すことにしました。電子工作とかアマチュア無線とかについて書いてます。あまり鵜呑みにしないでください。

lpc21ispを使ってLPC1114FN28を触りたい

超基本的なことですが意外に苦戦してしまったので備忘録的に, あとブログ書く練習として, 書いてます。 たぶん他の方のページ参照した方がいいです。

0. やりたいこと

  • ARM cortex-M0の32bitマイコンLPC1114FN28を触る
  • mbedコンパイラを使ってプログラムをビルドする
  • 書き込みはlpc21ispを用いてシリアル通信をする

OSはWindows 10です。ググっても新しめの環境での記事があんまり見つからないというのも, この記事を書いた理由の1つです。

1. ハードの準備

書き込みにはUSB-シリアル変換モジュールが必要です。今回はスイッチサイエンスのFTDI USBシリアル変換アダプター Rev.2を使いました。(秋葉原千石電商にて購入)

今回のマイコンとのつなぎ方は以下のようなかんじでいいと思います。

f:id:sounoji0224rrkn:20190221163815p:plain
図1 ハードのかんたんな配線図

マイコン側の電源供給などは省略して描いてますが, 3.3V駆動なので適宜3端子レギュレータなど必要です。

さて, ご存知の方多いと思いますが, LPC1114FN28はリセット時PIO0_1(24ピン)がlowでISPモードへ移行します。というわけでスイッチを付け, 押してから書き込みをするわけですが, 後述するlpc21ispではこのリセット(23ピン)とPIO0_1(24ピン)の操作を勝手にやってくれます。これは DTRと23ピン , RTSと24ピン を繋ぐ必要があります。

ところで↑のモジュールにはRTSのピンがないことに気づきました……。こういうのを買えばよかったわけですね(しかもこっちのほうが安い……)。ものすごく反省しました。今回は上図のように結局スイッチをつけて対処。秋月のやつ買うと以下のようになるかと思います(自分で動作確認はしてません)。

f:id:sounoji0224rrkn:20190221171100p:plain
図2 ハードのかんたんな配線図 改

2. ソフトの準備(lpc21ispの導入)

コードを書く→ビルドするの流れはmbedでやりました。(以降略)

できあがったバイナリファイル(.bin)を書き込むにはソフトウェアが必要です。昔はFlash Magicを使っていたのですが, バイナリファイルをhexファイルに変換する手間が必要だったり, そのためのソフト(bin2hexなど)が今の環境で動いてくれなかったりで, やめました。そこで, もう1つの手段としてlpc21ispを使うことにしました(ようやく本題)。

ダウンロード

ここからダウンロードしました。zipを解凍すると以下のようになります。

f:id:sounoji0224rrkn:20190221173914p:plain
図3 解凍後のファイルの中身

ちゃんとした方はここで「ああ普通にMakefileをビルドして実行だな」となるんでしょうけど無知でお馬鹿なmdyはここでしばらくストップしてしまいました。README.txtを開くと

To compile with microsoft visual studio:
- Open console. Execute bat file from your installation, e.g.
 "c:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
- Go to directory where you unpacked the source.
- Run
 nmake /f Makefile.vc clean all

とあります。そこで, mdyはVisual Studioをインストールしに, おばあさんは川へ洗濯に出かけました。

Visual Studio 2017でMakefileをビルド

さてVS 2017をインストールしたんですが, VC\bin\vcvars32.bat みたいなのは見つかりませんでした。色々ググったところ, 今はスタートメニューから開発者用コマンドプロンプト for VS 2017なるものを使えばnmakeが使えるみたいですね。

f:id:sounoji0224rrkn:20190221175630p:plain
図4 スタートメニューのこれ

と思ったんですが何をやってもnmakeがコマンドとして認識されず……。pathを通す必要があるのかもと思うもどこに通せばいいのかも分からない状態。ここで3日ほど浪費しました。

原因はVS 2017をインストールするときのミス。なにやってんだか。きちんと「C++によるデスクトップ開発」にチェックを入れインストールしなおせば改善しました。

f:id:sounoji0224rrkn:20190221180506p:plain
図5 Visual Studio 2017のインストール画面

さて, 開発者コマンドプロンプトにて先ほどのコマンド nmake /f Makefile.vc clean allを実行。画面が流れていきました。

f:id:sounoji0224rrkn:20190221180929p:plain
図6 nmakeの実行

「見つかりませんでした」とかいってるけど上手く行ったみたいです。フォルダ内にlpc21isp.exeを確認しました。

3. 書き込みの実行

あとはコマンドライン上でlpc21isp.exeを実行するだけで書き込めます。コマンドは例えば以下のようになります。

lpc21isp.exe -control -bin HelloWorld_LPC1114.bin com3 115200 48000

このときlpc21isp.exeとHelloWorld_LPC1114.bin(mbedコンパイラで作成したLチカプログラム)は同じフォルダに入れてあります。

com3はポートの番号です。変換モジュールを繋いだ状態でデバイスマネージャーから確認してください。
115200 48000はたぶんシリアル通信速度とクロック周波数です。
-controlは, これをつけることで前述のISPモードへの移行をやってくれるようになります。

実行結果が以下のようになれば成功です。やったね。

f:id:sounoji0224rrkn:20190221182854p:plain
図7 書き込みの実行(成功時)

-controlを付けてなかったり, スイッチを押し忘れていたりして, ISPモードに移行できていないときは以下のようになるみたいです。

f:id:sounoji0224rrkn:20190221183136p:plain
図8 書き込みの実行(非ISPモード)

4. できました

たったLチカごときに3日以上もかかっているようじゃあ先が思いやられますね。この記事自体もくだらないクソ記事ですが, これから頑張りたいと思います。
何か間違っていたらコメントください。

f:id:sounoji0224rrkn:20190221183735j:plain
図9 ブレッドボード上の完成写真

5. 余談

いまLPC1114FN28って秋月で400円もするんですね。今回使用したのは120円だったときにたくさん買ったうちの1つです。一番の特徴消えてるけど一体だれが使うんだ……。