CH32V003 で遊んでいる中、ProMicro サイズの開発ボードを作ってみました。
ProMicroc 型にする利点は以下のようなところがあります。
- 小さいけど、ほどよい量の IO を持つ。
- UART、I2C、5V、3V3 などの位置を揃えることで、新しいマイコンでも迷わず接続できる。
UART は1、2ピンと覚えているので、ログ出力とかしても、すぐにUSBシリアル変換を接続できて、役に立ちます。
例によって、開発ボードキットにして、booth で取り扱おうと思いました。
キット化の問題点、ライタ
CH32V203 など他の CH32V シリーズの中で、CH32V003 で問題もなるのが、専用のライタWCH-LinkE が必要なことです。それにも WCH-Link ではダメで、1 Wire プロトコルに対応した WCH-LinkE が必要になります。ボード単体を購入しても、書き込みができないのです。
これに対して、UART で書き換え可能なブートローダがCH32V003 のサンプルコードの中に含まれています。これについては過去に記事にしました。
これを予めMCUに焼いておくことで、キットとして使いやすくなると思い、そのようにすることにしました。
MCUを実装しなくても書き込めるように、TSSOP-20 のアダプタソケットを購入しました。
これを使ってMCU単体でも、ブートローダを書き込むことができました。
キットのMCUに予めブートローダーを焼いておく作戦 pic.twitter.com/MH7icuCHwu
— 74th (@74th) 2023年3月25日
UART で書き込めるツールをマルチプラットフォーム対応する
以前の記事では、UARTで書き込みをするには公開されているWindows用のソフトウェアを使う必要がありました。私自身、Windows はほとんど使っておらず、もっぱら MacOS か Linux です。MacOS と Linux でも書き込みができると望ましいです。
このプロトコルを理解して再実装し、Windows/MacOS/Linuxで共通で使える CLI ツールを作りました。これを使うことで、Windowsがなくてもファームウェアの書き換えが可能になりました。
ブートローダに少し手を加える
またブートローダには、サンプルから以下を変更しました。
- UART の Baud Rrmate 114,500 bps に下げる
- PC0 を PULL DOWN する
公式サンプルそのままではPC0 に未接続の時に High の扱いになってしまい、書き込みを待ち受ける状態になってしまいます。ESP32のGPIO0のように、未接続ではファームウェアがそのまま実行されるのが望ましいです。そのように PC0 を PULL DOWN にする対応を加えました。
UARTのBaud Rateを下げることで、CH340Cで作った書き込み機で時折失敗する現象を回避することができるようになりました。
一方公式ライタ WCH-LinkE クローンを作る
公式のライタ WCH-LinkE には、MCU CH32V305FBP6 が使われており、また回路図は公開され、ファームウェアはオープンソースではないにしてもファームウェア自体は公開されています。
回路図
これを使っていると思われる WCH-LinkE クローン(といってもファームウェアは同じですが)も、販売されているのを見つけることができます。
Wch linkeコンプライダーインターフェースRISC V TYPE C USB,SWD/シリアルポートサポート,すべてのwch mcus| | - AliExpress
ならば私自身も作ってみようと思い立ち、WCH-LinkEクローンを作成しました。
本来のWCH-LinkEがもつDAP-Linkとの切り替えボタンを排したシンプルなものになっています。これもWCH-LinkE として使うことができました。ピンヘッダよりもピンソケットになっている方が、抜き差しがしやすくて使いやすいです。
KiCadファイルはこちら
開発ボードキットとして booth にて取扱中
ということで、この作ったProMicro型開発ボードを、電子工作キットとして booth で販売中です。私の方でMCUにはUARTで書き込みできるブートローダーを書き込んであります。さらにオプションとして、WCH-LinkEクローンもおつけすることができます。
最後に
CH32V003 は非常に安価のわりに、DMAがちゃんとあってNeoPixelを点灯できたり、十分な機能を持っていて、とても魅力的です。さらに、CH32V003 の独自ライブラリが開発されて、多くのサンプルコードが追加されていたり、積極的に使われているのを感じます。
さらに、公式からCH32シリーズの Arduino が開発されていることが告知されています。
CHduino is Coming! 🔥
— Patrick Yang (@patrick_riscv) April 1, 2023
All WCH @risc_v CH32 would be supported. Components, hardware BSP and drivers are still under development. 💪 pic.twitter.com/qA0k6hPPZI
私自身は CH32V003 をジョイスティックモジュールに組み込む予定です。ぜひ気になったら今回紹介した CH32V003 ProMicro を入手してみてください。
なお、KiCad ファイルは公開しています。