PIC32MX270F256Bを用いてPICマイコンに書き込む(スマホ操作対応版)

はじめに
CH340Eを利用することにより、スマホで操作できるようになります。
なお、PIC32MX270F256Bのプログラムメモリが足りず、プログラムを3つに分けました。
用意するもの
- PICマイコン PIC32MX270F256B-50I/SP
 - PICマイコン。VPP電圧は、12V、9V、5Vに対応。ロジック電圧は、5V、3.3Vに対応。
 - ガーバーファイル
:PCBWayなどに、基板製造依頼してください。 - C基板用アクリルパネル(アクリル板) 2mm厚(透明)を2つ
 - スペーサー M3 5mm TP-5SMを4つ
 - 3mmプラネジ(5mm)を4つ
 - プラスチックナット+連結(6角ジョイント)スペーサー(10mm)セットを4セット
 - 1x5ピン ピンソケット(メス・L型) SSW-105-02-G-S-RAを1つ
 - スライドスイッチSS-14MDH2を1つ:12V、9V、5Vの切り替え
 - スライドスイッチ ISH-1260-HA-Gを1つ:5V、3.3Vの切り替え
 - MAX662 DIPモジュールを1つ:12Vの昇圧に用います
 - 積層セラミックコンデンサー 0.22μF50V X7R 5mmを2つ:12Vの昇圧に用います
 - 積層セラミックコンデンサー 4.7μF50V X7S 5mmを2つ:12Vの昇圧に用います
 - MOSFET 2N7000を1つ:3.3V→12V,9V,5Vのレベル変換に用います
 - 三端子レギュレーター 9V100mA HTC製 LM78L09を1つ:12Vから9Vをつくる
 - 積層セラミックコンデンサー 0.1μF250V X7R 5mmピッチを1つ:12Vから9Vをつくる
 - 積層セラミックコンデンサー 0.33μF50V X7R 5mmを1つ:12Vから9Vをつくる
 - 低損失レギュレーター LP2950L-3.3V 3.3V100mAを1つ:5Vから3.3Vをつくる
 - 積層セラミックコンデンサー 0.1μF250V X7R 5mmピッチを1つ:5Vから3.3Vをつくる
 - 積層セラミックコンデンサー 10μF50V X7S 5mmを1つ:5Vから3.3Vをつくる
 - I2Cバス用双方向電圧レベル変換モジュール(PCA9306)を2つ:3.3V←→5Vのレベル変換に用います
 - マイクロSDカードスロットDIP化キットを1つ
 - 3mm赤色LED 625nm 70度 OSR5JA3Z74Aを1つ
 - クリスタル(水晶発振子) 20MHzを1つ
 - 積層セラミックコンデンサー 27pF50V C0G 5mmを2つ
 - カーボン抵抗(炭素皮膜抵抗) 1/4W330Ωを3つ
 - カーボン抵抗(炭素皮膜抵抗) 1/6W330Ωを2つ
 - カーボン抵抗(炭素皮膜抵抗) 1/6W10kΩを2つ
 - CH340E USBシリアル変換モジュール Type-Cを1つ
 - ピンヘッダ (オスL型) 1×40 (40P)を1つ
 
![]()  | 
回路図
書き込みを行うのに「VDD」、「VSS(GND)」、「ISCPDAT」、「ISCPCLK」、「MCLR」という5つのピンを用います。 MCLRピンにPICマイコンの動作電圧より高い電圧(12V、9V、5V)の信号を与える必要があります。 また、ISCPDATピン、ISCPCLKピンとPICマイコンPIC32MX270F256Bの電圧が異なるため、レベル変換する必要があります。
1)USBから出力される5Vを、12Vに昇圧する必要があります。そのために、MAX662 DIPモジュールを利用します。
2)12Vから9Vをつくるには、三端子レギュレーター LM78L09を利用します。
3)5Vから3.3Vをつくるには、低損失レギュレーター LP2950L-3.3Vを利用します。
4)3.3V→12V,9V,5Vのレベル変換するのには、MOSFET 2N7000を利用します。
5)3.3V←→5Vのレベル変換するのには、I2Cバス用レベル変換モジュール(PCA9306)を利用します。プルアップ抵抗は、1kΩが実装されています。
ソフトウェア
pickle
C言語で書かれていますので、これをPICマイコンPIC32MX270F256Bに移植を試みます。本体は、ほぼ、そのまま使用し、INPUT側のインターフェースの部分とOUTPUT側のインターフェースの部分を書き換えます。 MPLAB X IDEで開発しました。プログラムコードを公開します。PIC32MX270F256Bのメモリ不足のため、3つに分けました。
もう一つ書き換えた箇所があります。それは、ヒープメモリです。元のプログラムは、Linux環境で豊富にヒープメモリが使えますが、マイコンの場合、限られています。 そこで、MicroSDの記憶領域を利用しました。
(2025.10.15更新)
プログラムコード 8bit用(p12,p14,n14,p16,n16)

HEXファイル 8bit用(p12,p14,n14,p16,n16)

プログラムコード 16bit用(p24)

HEXファイル 16bit用(p24)

プログラムコード 32bit用(p32)

HEXファイル 32bit用(p32)

書き込み(PC操作)
1)自作PICライタとPICマイコンを接続します。PIC書き込みアダプタを利用すると便利です。
2)HEXファイルをmicroSDに書き込み、それを自作PICライタに挿入します。
3)PCとUSB接続(仮想COM、UART)して、PCより操作して、プログラム(hexファイル)をPICマイコンに書き込みます。 シリアル通信で行単位送信モードが使えるシリアルモニタソフトを使って操作できますが、自作の書き込みソフトも作成しました。
Windows用書き込みソフト(2025.10.15更新)

書き込み(スマホ操作)
1)自作PICライタとPICマイコンを接続します。PIC書き込みアダプタを利用すると便利です。
2)プログラム(hexファイル)をmicroSDに書き込み、それを自作PICライタに挿入します。
3)スマホとUSB接続(Android 3.1以上:USB Host API)して、スマホより操作して、プログラム(hexファイル)をPICマイコンに書き込みます。 Serial USB Terminalなどを使って操作できますが、自作の書き込みアプリも作成しました。
android用書き込みアプリ(2025.10.26更新)

![]()  | 
※SONY製 KDDI SOV42で動作確認をしています。  | 









