LPC1114FN28/102 (16) -- ICSP 接続で PIC32MX のフラッシュに書き込む (1)

LPC1114FN28 を使って、PIC32MX マイコンのフラッシュにプログラムを書き込む実験をしています。
4 線式 JTAG 接続ではなく、2 線式の ICSP 接続 (2-wire 4-phase) を LPC1114 の SPI (4 ビット転送モード) を使って実現しています。
PC とはシリアル接続を考えています。 USB を利用するためには USB-シリアル変換ケーブルを使うことになります。
PIC32MX の内部の任意のアドレスの内容を読み出せる所まで来ましたが、これから先のフラッシュ・ライターとしてまとめるのは他力本願で、この「足回り」部分を既存の「pic32prog」に組み込む形で進めようと思っています。
このフラッシュ・ライターでは主にブートローダーを書き込むだけで、実際にはブートローダーをメインに使おうと考えているので、書き込みのスピードについては気にしないことにします。
秋月価格で 110 円のマイコン (LPC1114FN28/102、28 ピン DIP、600 mil 幅) を使って、220 円のマイコン (PIC32MX220F032B-I/SP、28 ピン DIP、300 mil 幅) に書き込もうとしている実験基板の写真を下に示します。

回路図を下に示します。

PIC32MX 側の電源まわりの回路は、単に「動作する」というレベルの最低限のもので、アナログ VDD のノイズを抑えるような配慮はしていません。
LPC1114 側のリセット/ブート SW の回路、シリアル・インターフェース回路の詳細も省略しています。 (実験基板では水晶振動子まわりの部品は実装していません)
実際には、2012 年 9 月 19 日の記事 (→ こちら) のような回路になっており、USB-シリアル変換にはインターフェース誌 2007 年 5 月号付属の V850 基板を改造したものを利用しています。
2 線式のインターフェースですが、実際にはターゲットの MCLR も制御する必要があるので、それも加えて 3 本の信号線をつなぎます。
2 線式の ICSP 信号のペアは、

  • PGEC1 / PGED1
  • PGEC2 / PGED2
  • PGEC3 / PGED3

の 3 つがあり、どれも同等に使えますが、ここでは、PGEC2/PGED2 のペアを使っています。
コンフィギュレーション・ワードの中に、ICSP 接続のポートを選択するビットがありますが、これは「デバッガ」として常時接続しておくポートを選択するもののようで、フラッシュ書き込み/ベリファイ/読み出しの用途には、その指定にはかかわりなく 3 つのうちのどれでも使えるようです。
今後は、1/2/3 のどれを選択したかにかかわらず、その番号を「x」として一般的に PGECx / PGEDx のように表現します。
2-wire 4-phase ICSP では、4 線式の JTAG 接続と同様の機能を 2 線で実現しており、PGECx はシフト・クロック出力専用になっています。
双方向データ線である PGEDx には JTAG の TMS / TDI / TDO の 3 線分のデータを時分割多重しています。
3 ビット分の信号を多重するためには、JTAG の 1 クロック分を ICSP では 3 クロック分に対応させれば良いわけですが、TMS / TDI と、TDO ではデータ転送方向が異なるので、その切り替えのためのマージンとして計 1 クロック分を割り当てた結果、合計で ICSP の 4 クロック分が JTAG の 1 クロック分に対応しています。
次回は、その対応関係を示す下の図の説明から始めたいと思います。