lpc21ispを使ってLPC1114FN28を触りたい
超基本的なことですが意外に苦戦してしまったので備忘録的に, あとブログ書く練習として, 書いてます。 たぶん他の方のページ参照した方がいいです。
0. やりたいこと
OSはWindows 10です。ググっても新しめの環境での記事があんまり見つからないというのも, この記事を書いた理由の1つです。
1. ハードの準備
書き込みにはUSB-シリアル変換モジュールが必要です。今回はスイッチサイエンスのFTDI USBシリアル変換アダプター Rev.2を使いました。(秋葉原の千石電商にて購入)
今回のマイコンとのつなぎ方は以下のようなかんじでいいと思います。
マイコン側の電源供給などは省略して描いてますが, 3.3V駆動なので適宜3端子レギュレータなど必要です。
さて, ご存知の方多いと思いますが, LPC1114FN28はリセット時PIO0_1(24ピン)がlowでISPモードへ移行します。というわけでスイッチを付け, 押してから書き込みをするわけですが, 後述するlpc21ispではこのリセット(23ピン)とPIO0_1(24ピン)の操作を勝手にやってくれます。これは DTRと23ピン , RTSと24ピン を繋ぐ必要があります。
ところで↑のモジュールにはRTSのピンがないことに気づきました……。こういうのを買えばよかったわけですね(しかもこっちのほうが安い……)。ものすごく反省しました。今回は上図のように結局スイッチをつけて対処。秋月のやつ買うと以下のようになるかと思います(自分で動作確認はしてません)。
2. ソフトの準備(lpc21ispの導入)
コードを書く→ビルドするの流れはmbedでやりました。(以降略)
できあがったバイナリファイル(.bin)を書き込むにはソフトウェアが必要です。昔はFlash Magicを使っていたのですが, バイナリファイルをhexファイルに変換する手間が必要だったり, そのためのソフト(bin2hexなど)が今の環境で動いてくれなかったりで, やめました。そこで, もう1つの手段としてlpc21ispを使うことにしました(ようやく本題)。
ダウンロード
ここからダウンロードしました。zipを解凍すると以下のようになります。
ちゃんとした方はここで「ああ普通に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が使えるみたいですね。
と思ったんですが何をやってもnmakeがコマンドとして認識されず……。pathを通す必要があるのかもと思うもどこに通せばいいのかも分からない状態。ここで3日ほど浪費しました。
原因はVS 2017をインストールするときのミス。なにやってんだか。きちんと「C++によるデスクトップ開発」にチェックを入れインストールしなおせば改善しました。
さて, 開発者コマンドプロンプトにて先ほどのコマンド nmake /f Makefile.vc clean all
を実行。画面が流れていきました。
「見つかりませんでした」とかいってるけど上手く行ったみたいです。フォルダ内に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モードへの移行をやってくれるようになります。
実行結果が以下のようになれば成功です。やったね。
-control
を付けてなかったり, スイッチを押し忘れていたりして, ISPモードに移行できていないときは以下のようになるみたいです。
4. できました
たったLチカごときに3日以上もかかっているようじゃあ先が思いやられますね。この記事自体もくだらないクソ記事ですが, これから頑張りたいと思います。
何か間違っていたらコメントください。
5. 余談
いまLPC1114FN28って秋月で400円もするんですね。今回使用したのは120円だったときにたくさん買ったうちの1つです。一番の特徴消えてるけど一体だれが使うんだ……。