CH552P
8bitUSBマイコン
って何??と思い、昨年末に入手した WCH社製 CH552P について、備忘録的に書き留めておく。
入手先
例によって、秋月電子通商さんから購入。秋月さんオリジナルのDIP化基板。
税込180円と格安のマイコン。

マイコンチップは実装済み、ピンヘッダをハンダ付けするだけ。
書き込み回路
↓こちらのブログを参考に、ミニブレッドボードに組みました。

左上のUSB-Cが、プログラム書き込み用。左下の赤いスイッチを押しながらUSBポートに接続すると、ダウンロード用のブートローダが走る。その間に、ArduinoIDEからプログラムをアップロードする。
ISPを使っても書き込めるが、USBマイコン
と称する通りネイティブにUSBに接続できるマイコンだ。
シリアル接続
前項の写真の上部から来ている4本のケーブル(5V, GND, TXD, RXD)が、シリアル通信用。
このマイコンは3.3Vでも起動するが、5Vを供給しないとシリアル通信できない。最初、3.3VのUSBシリアル変換器を使っていて全然通信できず、原因が分からず何時間もハマった。
リセットスイッチ
右下の黒いスイッチがリセットボタン。RSTピン(7番ピン)は、マイコン内でプルダウンされているから普通はオープンでよい。外部からリセットするときは、RSTピンをHIGHにする。上の写真では、黒ボタンスイッチを押すと5番ピンに短絡するが、GPIOピンは、デフォルトでプルアップされているので、特別な配線不要でリセットボタンとなる。
ブート用の赤ボタンを押しながらリセットボタンを押しても、ダウンロードモードにはならない。ダウンロードモードに移行するには赤ボタンを押しながら、USB電源を入れ直す必要がある(USBケーブルの差し直し)。
写真では、シリアル通信のケーブルの下で見えにくいが、左上のUSB-Cの右側にスライドスイッチを取り付けてある。これをOFFすると、USBのVBUSが遮断されるので、ケーブルを抜き差しぜず、スイッチのOFF-ONと赤ボタン押下でダウンロードモードに移行できる。
ArduinoIDEで”ch55xduino”
既出のブログの解説に従って、ch55xduino
ボードを追加するだけ。

BASIC52の導入
既出のブログでは、WCHISPTool
を使ってHEXファイルを書き込んでいるが、Macでは使えない。そこで、ArduinoIDEがch55xduino
ボードの書き込みで使っているコマンドを流用。
$ ~/Library/Arduino15/packages/CH55xDuino/tools/MCS51Tools/2023.10.10/macosx/vnproch55x -r 2 -t CH552 -c 3 basic52q.hex
CH55x Programmer by Deqing
Updated on: 2023/10/10
------------------------------------------------------------------
usbRertySeconds 2
target: CH552
config bytes: 3
Load file as hex
Loaded 8131 bytes between: 0000 to 1FFF
DeviceVersion of CH55x: 2.50
MCU ID: 52 11
Found Device CH552
Bootloader: 2.5.0
ID: 91 31 C5 BC
XOR Mask: 43 43 43 43 43 43 43 95
Write 8192 bytes from bin file.
..................................................
Write complete!!!
Verify chip
..................................................
Verify complete!!!
------------------------------------------------------------------
Reset OK
BASICのシリアルコンソール
既出のブログでは↓こう書かれている。
BASICのHEXファイル書き込みが成功した状態で、シリアル-2 (TxD1,RxD1) にTeraTERMを動かしたPCを接続するとBASICのプロンプトが表示されます
しかし、配線を何度も見直し、何度やってもうまくいかない。試しに、シリアルを9番10番ピンのTXD、RXDに接続したところ、あっさり動いた。 (使用したターミナルアプリは、開発デバッグ中の自作もの)
ASCIIART(マンデルブロ集合)もご覧のとおり動く。
(RUN送信から実行終了のREADY受信までの時間をターミナルアプリで計測、24秒は早いのか??)
さらに、1980年代の懐かしいゲームで遊ぼうかとコードを入力していたが、全体60行弱のコードの22行目でメモリエラー。
RAMが1KBと極小のためだろう。残念。
RAMが6KBの上位チップ CH559 でリベンジしようか思案中。
以上
Pinout
2024.5.13追加