CH32V003 の ProMicro サイズ開発ボードをつくった

CH32V003 で遊んでいる中、ProMicro サイズの開発ボードを作ってみました。

f:id:j74th:20230326231025j:image

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 のアダプタソケットを購入しました。

http://www.US.com/ $2.07 6%OFF | SOP8/SOP14/SOP16/SOP20/SOP28/TSSOP8/TSSOP16/TSSOP20/TSSOP28 TO DIP programmer adapter socket 150MIL 208MIL 300MIL 173MIL DIP8 28https://a.aliexpress.com/_mOg4imK

これを使ってMCU単体でも、ブートローダを書き込むことができました。

UART で書き込めるツールをマルチプラットフォーム対応する

以前の記事では、UARTで書き込みをするには公開されているWindows用のソフトウェアを使う必要がありました。私自身、Windows はほとんど使っておらず、もっぱら MacOSLinux です。MacOSLinux でも書き込みができると望ましいです。

74th.hateblo.jp

このプロトコルを理解して再実装し、Windows/MacOS/Linuxで共通で使える CLI ツールを作りました。これを使うことで、Windowsがなくてもファームウェアの書き換えが可能になりました。

github.com

ブートローダに少し手を加える

またブートローダには、サンプルから以下を変更しました。

  • UART の Baud Rrmate 114,500 bps に下げる
  • PC0 を PULL DOWN する

公式サンプルそのままではPC0 に未接続の時に High の扱いになってしまい、書き込みを待ち受ける状態になってしまいます。ESP32のGPIO0のように、未接続ではファームウェアがそのまま実行されるのが望ましいです。そのように PC0 を PULL DOWN にする対応を加えました。

github.com

UARTのBaud Rateを下げることで、CH340Cで作った書き込み機で時折失敗する現象を回避することができるようになりました。

一方公式ライタ WCH-LinkE クローンを作る

公式のライタ WCH-LinkE には、MCU CH32V305FBP6 が使われており、また回路図は公開され、ファームウェアオープンソースではないにしてもファームウェア自体は公開されています。

回路図

www.wch.cn

ファームウェア

github.com

これを使っていると思われる WCH-LinkE クローン(といってもファームウェアは同じですが)も、販売されているのを見つけることができます。

Wch linkeコンプライダーインターフェースRISC V TYPE C USB,SWD/シリアルポートサポート,すべてのwch mcus| | - AliExpress

ならば私自身も作ってみようと思い立ち、WCH-LinkEクローンを作成しました。

本来のWCH-LinkEがもつDAP-Linkとの切り替えボタンを排したシンプルなものになっています。これもWCH-LinkE として使うことができました。ピンヘッダよりもピンソケットになっている方が、抜き差しがしやすくて使いやすいです。

KiCadファイルはこちら

github.com

開発ボードキットとして booth にて取扱中

ということで、この作ったProMicro型開発ボードを、電子工作キットとして booth で販売中です。私の方でMCUにはUARTで書き込みできるブートローダーを書き込んであります。さらにオプションとして、WCH-LinkEクローンもおつけすることができます。

booth.pm

最後に

CH32V003 は非常に安価のわりに、DMAがちゃんとあってNeoPixelを点灯できたり、十分な機能を持っていて、とても魅力的です。さらに、CH32V003 の独自ライブラリが開発されて、多くのサンプルコードが追加されていたり、積極的に使われているのを感じます。

github.com

さらに、公式からCH32シリーズの Arduino が開発されていることが告知されています。

私自身は CH32V003 をジョイスティックモジュールに組み込む予定です。ぜひ気になったら今回紹介した CH32V003 ProMicro を入手してみてください。

なお、KiCad ファイルは公開しています。

github.com