RISC-V MCU の CH32V203 開発ボードを作った

RISC-V MCU の CH32V203 を使ったマイコン開発ボードを作りました。

CH32Vシリーズとは

ARMコアを使ったマイコンには、STM32が有名ですが、これをなぞった中国製マイコンとして、 GigaDevice GD32 や WCH CH32 マイコンがあります。型番にも STM32F103C8T6 と同じ機能であると主張するように、CH32F103C8T6 などと付けられています。

そしてそれをそのまま ARM から RISC-V コアに置き換えたマイコンが、GD32VF103 や CH32V103 として作られています。

私は、少し前にESP32 -C3 で Rust にトライしてみて、特に特殊なコンパイラを使わなくてもコンパイルできることを良いと感じていました。これと同様に CH32V マイコンでも開発できたら楽しいなと思っていました。ch32-rsというクレートが作られていて、開発が始められそうな気になります。

github.com

CH32V203 の入手先

CH32V203 は Aliexpress の WCH 公式ストアで購入することができます。評価ボードも販売されています。

https://ja.aliexpress.com/item/1005005069239098.html

このブログ執筆時点では在庫切れですが、LCSCでも購入することができます。単価 $0.5~0.6 と、STM32と比べてもかなり安価です。他の GD32 や APM32 と比べても安価のようです。

https://www.lcsc.com/product-detail/C3001172.htmlwww.lcsc.com

CH32V203 を手に入れて触ってみる

とりあえず、触ってみるために、CH32の評価ボードを Aliexpress で購入しました。

H32V203 には、CH55x と同じく、USB経由でマイコンの書き込みができる口が用意されていました。BOOT0 を 1 、BOOT1 を 0 に入れてリセットを押すと、USB0DM、USB0DP が認識し、USB経由で書き込めるようになります。

このUSB経由で書き込むツールには、ch32-rs のプロダクトの一つである wchisp を使うことができます。

github.com

Rust で開発する

Rust で RISC-V の開発を始めるには、以下のコマンドを入れるだけで環境が整います。

rustup target add riscv32imac-unknown-none-elf

ch32-rs のサンプルプログラムのリポジトリがあり、これを書き込むことでLチカまで到達できます。

github.com

これで評価ボードでRustでLチカまで確認できました。

なお、Cでの開発環境は MountRiver Studio というEclipseベースのIDEを使うと構築できるようです。ツール含めてオープンソースではありません。

とりあえず開発ボードを作る

次のステップとして、開発ボードを作りたいと思いました。例によってProMicroサイズの開発ボードが作りたくなり、ProMicroサイズでProMicroの機能に近いピンを割り当てて作りました。

https://github.com/74th/ch32v-dev-boards/raw/main/ch32v203-promicro/ch32v203-promicro-v1.0.0-pinout.png

熱に弱いのか動かないw

いくつか作ってみてわかったことがあります。それはすごく熱に弱いようだということです。RP2040 はわりといくら熱を与えても壊れない安心感がありましたが、ちょっと GND に熱を与えすぎるとすぐ壊れるようで、5枚作ったPCBのうち4枚を早々に消費してしまいました。

回避策として、MCU以外の全てのパーツを先に実装し、一番最後に MCU を実装することにしました。

boothでも出品中(しかし、在庫切れ中)

この CH32V203 ProMicro 開発ボードキットをboothにも出品したところ、すでに3件の注文をいただきました。物好きな人もいるものです。

しかし現在品切れ中となっています。CH32V203 MCU 自体は入手済みなのですが、新しいPCBを現在発注中です。

STM32 のライブラリが使えたりしないかみてみたい

STM32 には stm32f1xx-hal という、RustのArduino的抽象レイヤ embedded-hal が整備されています。もともとCH32V の前身は CH32F という ARM コアの MCU であり、STM32 をまねて作られています。このことから CH32F および CH32V の Peripheral の部分は STM32 に似せてあり、そのためSTM32と同様のライブラリを組めば動いてくれないかと思ったりしています。

今後、先に stm32f1xx-hal に入門し、それを CH32F103 に移植できないか試し、さらに CH32V203 に持ってきてみたいと思います。

そのために、STM32F103 の開発ボード BluePill を、 CH32F103、CH32V103 に置き換えた BluePill を入手済みです。

https://ja.aliexpress.com/item/1005001474741936.html

なお、GD32VF103 については既に embedded-hal のクレートが作られています。

github.com

GD32VF103 開発ボードは秋月でも扱われていますね。

akizukidenshi.com