LPC1114FN28/102 (3)

Flash Magic」の設定としては、まず、トランジスタ技術 2012 年 10 月号 pp.83 にあるように「Step1 - Communications」の部分で

  • Select : LPC1114/102
  • COM Port : COM x
  • Baud Rate : 115200
  • Interface : None (ISP)
  • Oscillator (MHz) : 12

のように設定します。
ここで、「COM Port」の部分は実際に使用する COM ポート番号を指定します。
ボーレートの指定は 115200 が最大値のようです。
オプションの設定により、もっと高速の値が指定できますが正しく動作しません。
リセット直後から ISP ファームウェア(ブートローダ)が呼び出される通常の使用法ではデフォルトで IRC (内部 RC オシレータ) が使われ、水晶発振回路はパワーダウンされたままになります。
「Oscillator」の欄で指定したオシレータ周波数は無視されるので、実際にはその値は何でも構いません。
シリアル・インターフェース側の DTR/RTSマイコン側の RESET(PIO0_0)/BOOT(PIO0_1) を接続して、自動的にブートローダを起動するためには追加の設定が必要になります。
それは、Flash Magic のメニューから「Options」/「Advanced Options...」と選んで開くダイアログの「Hardware Config」タグをクリックして
「Use DTR and RTS to control RST and ISP pin」
の先頭にあるチェック・ボックスにチェックを入れます。
その下にある
「Keep RTS Asserted while COM Port open」
にはチェックを入れても入れなくても構いません。
その下の「T1」にはデフォルト値で「50」、「T2」にはデフォルト値「100」が入っていますが、これは特に変える必要はありません。
Flash Magic では、シリアルを経由してマイコン側を操作する場合、毎回、毎回、操作の前に指定の COM ポートを開き DTR/RTS をコントロールし、操作が終了するとそのたびに COM ポートを閉じています。
そのため、Flash Magic のアプリケーションを起動しっぱなしでも、何も操作していない状態では COM ポートは解放されており、他のアプリケーションからアクセスすることができます。
たとえば、SMF プレイヤーや、MIDI シーケンサでシリアル MIDI インターフェースを使っている場合、COM ポートが使用されるのは演奏中だけで、それ以外では COM ポートは解放されています。
つまり、MIDI2CV などのマイコン・アプリケーション・プログラムを

という流れを繰り返して行う場合に、Flash Magic も、MIDI シーケンサも両方立ち上げたままで進めることができます。
Flash Magic のマニュアルの 7.3 章「Hardware Configuration」の「LPC2xxx and LPC1xxx」の項 (pp.49) にある図を再構成したものを下に示します。

USB シリアル変換チップである CP2102 の端子名としては DTR/RTS のようになっていますが、実際には負論理 (アクティブ L) の信号であり、\small\rm\overline{DTR}/\small\rm\overline{RTS} のように記述すべきですが、「論理」として表現する場合には「アサート」(assert)、「ネゲート」(negate) あるいは「ディアサート」(deassert) と記述することにします。
実際の電圧レベルが問題になる場合のみ \small\rm\overline{DTR}/\small\rm\overline{RTS} のような記述とします。
上の図は電圧レベルで表現されています。
ISP オペレーションの前に COM ポートがオープンされ、DTR/RTS ともにアサート状態となり、RESET(PIO0_0) ピンおよび BOOT(PIO0_1) ピンはともに「L」レベルにドライブされ、マイコンはリセットされます。
その状態が T1 (50 ms) だけ保持されたあとに DTR はネゲートされマイコンは内蔵 ROM のプログラムを実行し始めます。
この段階では、まだ BOOT(PIO0_1) ピンは「L」レベルなので、強制的にブートローダ (ISP) のモードとなります。
「Keep RTS Asserted...」のオプションにチェックが入っていない場合は T2 (100 ms) 経過すると RTS もネゲートされますが、チェックが入っている場合には RTS はアサートされっぱなしとなります。
図では破線で示してあります。
ISP オペレーションが終了すると、DTR がアサートされ、マイコンにリセットがかかります。
その状態が T1 (50 ms) 続き、RTS がネゲートされます。
さらに T2 (100 ms) 後に DTR がネゲートされ、マイコンのリセットが解除されますが、このとき BOOT(PIO0_1) ピンは「H」レベルなので ROM 中のブートローダが強制的に実行されることはなく、Flash 中のユーザ・プログラムに (正しく書き込まれていれば) 制御が移ります。
つまり、マイコン側のリセット・ボタン等のハードウェア操作なしに、ソフトの操作だけでユーザ・プログラムの書き込みと、その実行を続けて行えることになります。
これは大変に便利な機能ですが、一方で問題もあります。
マイコン上のユーザ・プログラムで PC 上のターミナル・ソフトと対向してシリアル入出力を行う場合、ターミナル・ソフトによっては COM ポートがオープンされている間、DTR がアサートされっぱなしになります。
この場合、マイコンがリセットされっぱなしとなり、ユーザ・プログラムが実行されません。
DTR/RTS を操作可能なターミナル・ソフトを使えば解決ですが、都合のよいことに、Flash Magic 自体に簡易ターミナル・ソフトが組み込まれているので、これを利用する方法もあります。
次回はそのあたりを話題にします。