ビット・トレード・ワンで取り扱いの始まった、WeAct StudioのCH32V006F8U6マイコンボードの使い方を解説します。CH32V006はまだまだインターネット上の情報が多くなく、興味はあるもののまだ手を出していない、という方も多いのではないでしょうか。本記事では、まずLチカ、そしてUSBデバイスにも挑戦してみます。
CH32V006はCH32V003と比較すると、CPUに乗算命令が追加されていたり、FlashROMが62KB、RAMが8KBに増量されていたり、ペリフェラルも拡充されているなど、全体的に強化されています。安価で小さいながらもさらに強力なチップという印象です。
本記事を参考に、ぜひマイコンボードを活用してみてください!
ビット・トレード・ワン(BitTradeOne)は神奈川県相模原に本社を置く、電子工作モジュール・キット、ユニークで便利なガジェット、同人ハードウェアの製品化サービス「BTOマイ・プロダクトサービス」、模型向けブランド「MODMAGIC」、各種受託を手掛ける、電子機器の製造・販売の会社です。また、WeAct Studioブランドの代理店もしています。
製品は各取扱店のほか、公式オンラインショップ BTOS やAmazonでも販売しています。
必要なもの
WeAct Studio CH32V006F8U6マイコンボード
後半のUSB通信を試す場合は、3.3V版を使用してください。
WeAct Studio WCH.linkE
WCH公式の "WCH Link-E" と互換のライター・デバッガーです。ビット・トレード・ワンで取り扱っているのはWeAct Studioブランドの互換品です。(もちろんWCH製のLink-Eも利用可能です。)
開発環境を選ぶ
本記事では以下の3つを紹介します。
- MounRiver Studio 2
- PlatformIO + ch32fun
- PlatformIO + rv003usb + ch32fun
デバッガーを準備する
Link-Eデバッガーとマイコンボードを接続し、プログラムの書き込みができるように準備します。
WCH公式サイトから、書き込みツールとなる LinkUtility をダウンロードします。なお本記事は V2.80 で検証していますので、同じか、もしくはさらに新しいバージョンをダウンロードしてください。
Drv_Linkフォルダ内に2つの実行ファイルがあります。それぞれ実行し、必要なデバイスドライバをインストールします。(どちらもダイアログなどは表示されませんので、実行できていればオッケーです。)
Link-Eデバッガーを、Mode-Sボタンを押しながらパソコンと接続します。Mode-Sボタンは、Type-Cコネクタを左側にもってきたときに下側のボタンです(WCH公式もWeAct Studio品も同じです)
LinkUtilityを起動します。WCH-LinkUtility.exeを実行してください。
画面上部のリストボックス Core を RISC-V に、Series を CH32V002/4/5/6/7 に切り替えます。この状態で Query Chip Info (すぐ上の左から3つ目のアイコン)をクリックします。画面右側の MCU UID, Flash Size, Link Versionが埋まれば成功です。
(もし失敗したら、本記事末尾の「うまく動かないとき」を参照してください)
MounRiver Studio 2 でLチカする
MounRiver Studio 2 は公式に案内されている開発環境です。ARMのSPL (Standard Peripheral Library)スタイルのライブラリが添付されています。
以下のサイトからMounRiver Studio 2をダウンロードして、インストールしてください。(バージョン2ではないMRSもありますが、こちらは過去バージョンです。)
インストールが完了したら起動します。最初にいくつかコンポーネントのダウンロードを促されるので、指示に従います。
左のパネルのCreate MounRiver Projectでプロジェクトを新規作成します。ターゲットとなるチップは CH32V006 → CH32V006F8U6 を選択します。
プロジェクトが作成できたら、User/main.cpp を開きます。main()関数もここに入っています。Core, Debug, Ld, Peripheral, Startupは、そのチップ向けのテンプレートのコードがそのままコピーされています。
デフォルトではシリアルポート/デバッグポートでprintf()するコードが入っていますが、今回はLED点滅をしてみましょう。main()関数を以下のコードに差し替えてください。メニューから Project → Build Projectでコンパイル、コンパイルが成功したら、 Flash → Download でデバッガー経由で書き込みが実行されます。
C3ピンとGNDピンの間にLEDを接続し、1秒ごとに光ることを確認してください。
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
SystemCoreClockUpdate();
Delay_Init();
RCC_PB2PeriphClockCmd(RCC_PB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef gpio_init = {};
gpio_init.GPIO_Mode = GPIO_Mode_Out_PP;
gpio_init.GPIO_Speed = GPIO_Speed_30MHz;
gpio_init.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOC, &gpio_init);
while (1) {
GPIO_WriteBit(GPIOC, GPIO_Pin_3, Bit_SET);
Delay_Ms(500);
GPIO_WriteBit(GPIOC, GPIO_Pin_3, Bit_RESET);
Delay_Ms(500);
}
}
PlatformIO + ch32funでLチカする
ch32funはCNLohr氏によるCH32マイコン向け開発環境です。比較的軽量な環境で、ライブラリ関数とレジスタ操作を組み合わせてコーディングするスタイルです。当初は "ch32v003fun" という名前で CH32V003 がターゲットでしたが、現在はCH32V003, CH32V203, CH32V006など複数のチップで利用できます。
PlatformIOはVSCodeの拡張機能からインストールできます。Create New Projectで、Boardを Generic CH32V006F8U6 (W.CH)、Frameworkをch32v003funにして、プロジェクトを作成してください。
こちらでもLED点滅を試してみましょう。以下のコードで src/main.cpp を作成してください。また、中身は空っぽの src/funconfig.h ファイルも作成してください(こちらはch32fun設定用ファイルですが、今回は設定変更がないので中身は無くてよいです。)
#include "ch32fun.h"
int main() {
SystemInit();
funGpioInitAll(); // Enable GPIOs
funPinMode(PC3, GPIO_Speed_50MHz | GPIO_CNF_OUT_PP);
while (1) {
funDigitalWrite(PC3, FUN_HIGH);
Delay_Ms(500);
funDigitalWrite(PC3, FUN_LOW);
Delay_Ms(500);
}
}
VSCodeの画面左下のアイコンから、Buildでコンパイルし、Uploadでデバッガーを通じてプログラムを書きこみます。同じようにLEDが点滅すれば成功です。
rv003usb + ch32funでUSBキーボードを作る(実験的)
CH32V006チップにはUSB通信機能は内蔵されていません。しかし、ソフトウェア的にピンを制御してUSB通信を実現するライブラリがあります。それが rv003usb です。名前の通り、当初はCH32V003がターゲットでしたが、2026-05ごろにCH32V006サポートが追加されました。
まだ新しい環境なのですんなりと行かないところもありますが、マイコンボードの応用範囲を広げられそうです。
かんたんなUSBキーボードプロジェクトを作成したので、こちらをクローンしてください。
PlatformIOでプロジェクトを開きます。そうすると必要なライブラリ rv003usb が自動でダウンロードされるはずです。
ここでパッチを手動で当てます。 これをしないと、ビルドに失敗します。
.pio/libdeps/ch32v006f8u6/rv003usb/library.json ファイルの "unflags": ["-DCH32V00x"],の行を削除します。
あらためてビルドします。成功するはずです。WCH-LinkEでマイコンボードへ書き込みます。
PC0, PC1, PC2, PC3それぞれにアルファベットのキーが割り当てられているので、ピンをGNDに落とすと、入力されます。
CH32V006の情報源
公式のチップ紹介ページ
公式のSDKやサンプルプロジェクト
ch32fun by CNLohr
rv003usb by CNLohr
まとめ
WeAct Studio CH32V006F8U6マイコンボードを使って、開発環境の準備からLチカ、さらにrv003usbを使ったUSBキーボードの実験まで試してみました。
CH32V006は、CH32V003と同じく小型・低価格で扱いやすいRISC-Vマイコンでありながら、FlashROMやRAMの容量に余裕があり、ペリフェラル面も強化されています。シンプルなLチカから少し凝った応用まで試しやすく、電子工作や小型ガジェットの試作にも使いやすいチップだと感じました。
また、MounRiver Studio 2を使えば公式環境で手堅く始められますし、PlatformIO + ch32funを使えばVSCode上で軽量に開発できます。さらに、rv003usbを組み合わせることで、USBデバイスのような応用にも挑戦できます。
CH32V006はまだ情報が多いとはいえませんが、そのぶん試してみる面白さのあるマイコンです。ビット・トレード・ワンでもWeAct Studio製ボードとWCH.linkEを取り扱っていますので、気になった方はぜひ試してみてください。
補足:WCH.linkEがうまく動かないとき
万が一、青色LEDが点滅しているときは、デバッガー自体のファームウェアの再書き込みが必要です。
- ドライバをインストール
- WCH-LinkUtilityを起動
- Query Chipを押してしばらく待つ
- ファームウェア更新を尋ねるダイアログで、更新する
- 書き込みが完了したら、デバッガーを抜き取り、挿しなおす
再現性は不明ですが、もしファームウェア更新が成功するのにデバッガーとして認識されない場合、ターゲットとなるマイコンボードを接続した状態でファームウェア更新するとうまくいく場合があります。
補足:デバッガーの種類について
WCH公式では4種類のデバッガーが展開されていて、それぞれ対応チップ・機能・書き込み方法が異なります。CH32Vシリーズを使う場合は基本的に "Link-E" を使うのが安心です。("Link"は対応チップが狭い、"DAPLink"はARMチップ向け、"LinkW"は国内の電波規則対応が不明なため)
以下はWCHの資料から抜粋した対応マトリクスです。






