4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LPC1114FN28,10年の時を経て🦑

Last updated at Posted at 2025-04-05

部品入れから発掘したDIP28のArmマイコン:LPC1114FN28を久しぶりに動かした.
過去にやったことなどを思い出しながら作業.
これはその記録.

IchigoJamは11歳.そしてLPC1114FN28を発掘

あのIchigoJamはもう11歳になったらしい.
さらにNXPのFRDM-MCXA153にも対応したというニュース!

それからさらに,先日ラボの引越しでDIP28ピンパッケージのArmマイコン:LPC114FN28が発掘されたばかり.

DSC_2372.jpeg

mbedがないから🦑できない

そんなこんなで懐かしいこのチップにファームを書き込んで,久しぶりにIchigoJamをさわってみようと思ったけど,もうmbed.orgのオンライン・コンパイラは使えなくなってしまったので,以前のように気軽にイカ醤油ポッポ焼きできなくなってしまった( i꒳i )

ちなみに「イカ醤油ポッポ焼き」の本名は「ISP = In System Programming」.LPC1114が持っているフラッシュ・メモリ書き込みの機能を指す言葉.

残された手段

もっとも簡単な方法

もちろんデバッグ・インターフェースを使って開発ツールから書き込むことはできる.たとえばmbed LPC1114FN28のような基板があれば,USBに接続して,ストレージデバイスとして現れたそれにドラッグ・アンド・ドロップすればOKなんだけど,これを読んで「久しぶりに自分もやってみよう」と考えた人がもし居たとしても,このmbedがなければ試せない.
(「もう買えないし」って書こうかと思って調べてみたら.. まだ買えるっぽい!(2025年4月5日現在))

でもISPを使えば当別なハードウェアは不要で,USB↔︎シリアル変換器さえあれば書き込みができる.FlashMagiclpc21ispというこの機能をサポートしているアプリケーションがあった.

FlashMagic

当時よく使われた「FlashMagic」ってアプリがあったんだけど,もうとっくにメンテされてないみたいで,Mac用の最後のバージョンはダウンロードしてきても動かなかった (´・ω・`)

lpc21isp

そんなわけで最後の望み.lpc21ispを試す.こちらももう更新は止まってるみたい.でも昔のコードは少しの変更で問題なく動いた (ところでこのページ,なぜか自分のアイコンが出てるではないか.このころプルリク出したりしてたのを完全に忘れてた).

今回の変更はフォークしたリポジトリが自分のアカウントにそのまま残ってたので,その中に反映させておいた(ついでにプルリクも出しといた.どうなるかわからんけど).

このコードのビルドは,上記のリポジトリをクローンするかダウンロードしてmake clean; makeするだけ.なーんも面倒なことはない.

alice:~/dev/lpc21isp % make clean; make
rm -f adprog.o lpcprog.o lpcterm.o lpc21isp
gcc  -Wall -D__APPLE__ -c -o adprog.o adprog.c
gcc  -Wall -D__APPLE__ -c -o lpcprog.o lpcprog.c
gcc  -Wall -D__APPLE__ -c -o lpcterm.o lpcterm.c
gcc  -Wall -D__APPLE__ -o lpc21isp lpc21isp.c adprog.o lpcprog.o lpcterm.o
alice:~/dev/lpc21isp % ls
adprog.c     lgpl-3.0.txt lpc21isp.h   lpcprog.h    lpcterm.o    StdAfx.h
adprog.h     lpc21isp     lpcprog.c    lpcprog.o    Makefile
adprog.o     lpc21isp.c   lpcprog.dsp  lpcterm.c    Makefile.vc
gpl.txt      lpc21isp.cbp lpcprog.dsw  lpcterm.h    README

ハードウェア

用意するもの

  • ブレッドボード
  • USB↔︎シリアル変換のケーブル.今回は部屋に転がってたコレを使う → FTDI C232HD-DDHSP-0
  • ジャンパ線
  • 抵抗数百Ω〜1kΩぐらいのを1個 (オプション)
  • LED 1個 (オプション)

接続

MacとLPC1114の接続はブレッドボードとUSB↔︎シリアル変換のケーブル:FTDI C232HD-DDHSP-0を使うとこんな感じになる.

lpc1114fn28_breadboard_connection_via_ftdi_c232hd_ddhsp_0.png

警告
USB↔︎シリアル変換のケーブルには3.3V対応品を使うこと.同様の製品で電源と信号に5Vが出るものがあります.信号は5Vでも構いませんが(LPC1114は5Vトレラント入力なので),電源に5Vを入れるとチップがダメになる可能性大です.

図にはいい感じに書くことができなかったので省略したけど,LPC1114の3.3V電源(pin21)とGND(pin22)は,ピンのすぐそばで100nF程度のコンデンサを入れておきましょう.

USB↔︎シリアル変換ケーブル信号は色分けされていて,それぞれに電源や信号が割り当てられています (下の図はデータシートから抜粋).

ftdi_cable_colors.png

緑と灰色(図では黄土色)の線は,lpc21ispを使ってのフラッシュ・メモリへの書き込みを行うときだけに使うもの.
でもこの2本の線は絶対必要なわけではなくて,無くてもフラッシュの書き込みは可能です(後述).

DSC_2375.jpeg

LPC1114のISPモード

LPC1114FN28のpin23はリセット.pin24はPIO0_1というピンになっていて,このPIO0_1は特別な機能を持っています.
リセットを解除(pin23がLOWからHIGHに変化)する時にPIO0_1がLOWであると,LPC1114は内部ROMから立ち上がり「ISPモード」に入ります.これはシリアル・インターフェース経由で内部フラッシュメモリにアクセスするための特別なモード.
リセットPIO0_1ピンにボタン・スイッチをつけておいて手動でこの手順を行ってもいいのですが,書き込みのたびに操作するのは面倒.なので書き込みソフトからこれをやってもらいます.
灰色の線はリセット(pin23),緑はPIO0_1(pin24)に接続しておきます.

一旦フラッシュへの書き込みが済んだら,あとは電源の再投入やリセットのたびに内部フラッシュに書き込まれたコードが実行されるようになります.ただし電源投入直後やリセット解除時のPIO0_1は,非接続状態かまたはHIGHになるようにしておく必要があります.

書き込む

LPC1114に書き込むIchigoJamのファームウェアはこのページから入手できます.

「ver1.4.3」のリンクをクリックするとichigojam-1.4.3.zipががダウンロードされます.
このzipを解凍すると「ichigojam-jp-ntsc-jpkbd.bin」や「ichigojam-jp-ntsc-uskbd.bin」のファイルが出てきます.たぶんどっちでも問題ないはずですが,私はもとからUSキーボード・ユーザだし,それっぽい名前のファイルがあるのでそれを書き込んでみます.

さっきmakeしたアプリケーションを下のようなコマンドで動かします.

./lpc21isp -control -bin /Users/tedd/Downloads/ichigojam-1.4.3/ichigojam-jp-ntsc-uskbd.bin /dev/tty.usbserial-FTUMFUSM 115200 48000

このコマンドは..

  • 最初はもちろん,アプリケーションの名前.lpc21ispをビルドしたディレクトリ内でコマンドを打っているので,最初に./をつけています.(カレント・ディレクトリにパスが通っていれば./は必要ありません)
  • 次の-controlはリセットとISPモードに入れるためのピンの制御を行う指定
  • 次の-binは,それに続く文字列が書き込むデータ・ファイルへのパスで,それがbinフォーマットであることを示す.このファイル・パスは手で打ち込む必要はなく,書き込みたいファイルをターミナルソフトのウィンドウにドラッグ・アンド・ドロップすれば入力できます
  • その次は書き込むデバイスを接続したシリアルポートの指定.WindowsならCOM3のようなポートの指定になるけど,Macの場合は/dev/tty.usb*のようなスペシャル・ファイルとして見える.(これはあらかじめls /dev/tty.usb*のようなコマンドを実行して確認しておきます)
  • さらに次はボーレート設定.これは9600,19200,38400や57600でも構いません(LPC1114はISPの際のボーレートを自動認識する).でも書き込みは早く終わってくれる方がうれしいから一番高いボーレートを設定
  • 最後はLPC1114のクロック周波数を指定

コマンド実行後に「Download Finished... taking 〇〇 seconds」のような表示が出れば完了です.下の画像は,lpc21ispのビルド→シリアルポートの確認,lpc21isp実行を行って完了した様子.

スクリーンショット 2025-04-05 4.01.49.png

IchigoJamの動作確認

ターミナルソフトの設定

そのあとはターミナルソフトを開いて,先ほどのシリアルポートを指定して,ボーレートを115200に.さらにローカル・エコーを有効にして接続すれば,IchigoJamが使えます

参考としてSerialTools.appCoolTerm 2.3.0を使用した場合の設定を載せておきます.

SerialTools.appで使う

SerialTools.appはAppleのApp storeに登録されているアプリケーションなのでインストールが簡単です.

注意:
SerialTools.appを使うときには,フラッシュ書き込み時に使った緑と灰色の線を外しておきましょう.
接続したままだとリセットがかかったままの状態となって動きません.
緑と灰色の線はフラッシュ書き込みにだけ必要なものでした.なのでこれ以降は外したままでOKです.

上記のリンクからインストールしてアプリケーションを開くと次のようなウィンドウが開きます.2箇所を設定して(フラッシュ書き込み時に使った値と同じ)「Connect」ボタンを押します.

スクリーンショット 2025-04-10 18.10.11.png

この状態では何も表示されませんが,resetコマンドを打つとLPC1114にリセットがかかり,IchigoJamが再起動されます.

スクリーンショット 2025-04-10 18.19.02.png

スクリーンショット 2025-04-10 18.28.18.png

CoolTerm 2.3.0で使う

CoolTermはApp storeに登録されてないアプリケーションで,作者の配布ページからダウンロードしてきます.

スクリーンショット 2025-04-10 18.32.36.png

このアプリケーションを最初に開くと警告メッセージが出て起動することができません.完了ボタンを押して一旦閉じます.

スクリーンショット 2025-04-10 18.35.28.png

このあとで,Macの「システム設定.app」を開き,「プライバシーとセキュリティ」項目のアプリケーション実行許可を設定します(もしこの設定を行うことが不安な場合は,上記の別のアプリを使いましょう).

スクリーンショット 2025-04-10 18.37.19.png

アプリケーション実行許可の設定後は,問題なく開くことができます.
開いたウィンドウ上部のOptionsボタンを押して,下図のように設定を行いましょう.

スクリーンショット 2025-04-10 18.43.06.png

スクリーンショット 2025-04-05 6.21.45.png

上図の下部にあるDTR OffRTS Offのチェックは必須ではありませんが,両方ともデフォルト状態のOnになっていると,リセットPIO0_1がLOWのままになってしまいます.USB↔︎シリアル変換のケーブルを繋いだままにしているなら,この設定をしないと動きません.

スクリーンショット 2025-04-05 6.21.54.png

動かしてみる

次のようなコードを動かせば,Hello, world!を10回表示して終了します.

10 for i=0 to 9
20 print "Hello, world!"
30 next

スクリーンショット 2025-04-05 6.21.13.png

無事に動いたら,めでたしめでたし( ´ ▽ ` )ノ
接続しておいたLEDは次のようなコードで点滅させることができます.

10 print "Hello, LED blinker!"
20 for i=0 to 10
30 led i%2
40 wait 6
50 next

コードを毎回打ち込むのは大変.なのでパソコン上で編集しておいたテキストを流し込むことも可能です.

CoolTermはバージョン1.x.xのころは,通信状態の画面へのコピペでコードを書き込むことができたのですが,2.3.0ではSend string...メニューを使わないとダメっぽいです.
send_string.png

このあとは..

次回以降はファームウェアの書き込みは必要ありません.そのため,ケーブルも4本だけ接続すればOKです.

no_firm_programming.png

DSC_2390.jpeg

これで簡単手軽なミニマムなIchigoJam環境の完成です.

そうそう.FRDM-MCXA153にポートされたIchigoJamも動かしてみたので,これもそのうち書いてみることにしよう😃

スクリーンショット 2025-04-04 17.51.59.png

LPC1114FN28,10年の時を経て🦑 © 2024 by Tedd OKANO is licensed under CC BY 4.0
クリエイティブ・コモンズ・ライセンス

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?