Arduino環境でnanoCH32V003開発ボードを使う

コンピュータ、組み込み

最近にわかにはやってきているRISC-Vマイコン CH32V003搭載基板を入手しました。
Arduino環境で使用するための準備と、簡単な使い方を書きます。

紹介するもの

nanoCH32V003

特徴

安価な基板ですが、性能もそれなりにあります。
送料込みで\600/2pcほどです。(AliExpressで購入しました)

接続TypeC 電源用
(書き込みは WCH-LINKEを使用します)
CPUCH32V003F4U6 RISC-V 48MHz
メモリフラッシュ 16KByte
SRAM 2KByte
ロジックレベル3.3V
GPIO18
PWM– (8bit 0 ~ 255) (GPIO1 ~ GPIO10)
ADC10 (8bit 0 ~ 255, 3.3V)
USART1
I2C1
SPI1
その他リセットボタン

CH32V003F4U6では、 I2CとSPIが使えるようです。
次回使ってみます。

引用元 WCH 南京沁恒微电子股份

さらにコスパのよいCH32-V003開発ボード

ピン配置

3V3に3.3Vを印加しても5Vは取り出せません。
5Vに5Vを印加すると3.3Vを取り出すことができました。
USBコネクタから電源を供給すると、5Vも3.3Vも取り出すことができました。

外観


同等レベルの小型のマイコンの比較としてSAMD21 XIAO、Arduino Pro Microと比べてみます。
XIAOはUART, I2C, SPIを重複することなくこの規格に収めているのでバランスが良いのに対し、nanoCH32V003は、コンパクトなサイズでも使用できるGPIOをすべて引き出しています。

主な仕様では、XIAOが勝っていますが価格差は大きいです。
単純な用途であればnanoCH32V003をためらうことなく使っていけます。

nanoCH32V003XIAO SAMD21
CPU Clock48MHz48MHz
メモリ16KByte256KByte
SRAM2KByte32KByte
価格(送料込み)\400前後\1,200前後
使ってみた

GPIOのが1秒間に繰り返せるLOWとHIGHの回数を調査しました。
単純なMCUの性能ではなくライブラリの最適化によるところもあるので参考程度です。

結果からはXIAO SAMD21に比べると3割程度遅い結果です。

後述にサンプルを記載しますが、LチカとUARTはすぐに使用することができました。
UARTの書式付き出力[printf]が使用できるので、デバッグ用途で使いやすいです。

注意点としてGPIOのPD1に機能を設定するとその後のスケッチの書き込みができなくなります。
現在復旧する方法わからないので、復旧方法がわかれば追記することにします。

まとめ

スケッチの書き込みにはWCH-LINKEを使って配線をする必要があります。
Develop Boardなのに書き込むための配線が必要なのは煩わしく思えます。

開発基板としてのメリットは小さいですが、CH32V003チップの使い方を覚えるためには手早い方法だと思います。
MCUチップSOP8, SOP16を変換基板にはんだ付けをして使う方法があります。
半田の技量が必要で面倒な作業ですが、100円程度でマイコン基板を作れてしまいます。


これまで多くの方が記事を公開されているので、RP2040やESP32より面倒くさい程度で環境構築はできました。
新しいマイコン基板を使えるようになるとは楽しいことです。
まだボードライブラリの整備状況が完全ではないこと、周辺モジュールのほとんどは未対応であることから開発が思うようにいかない状況です。

チップ単価がとにかく安いのでメインMCUとして使用するよりは、メインMCUを補助する単純なスレーブモジュールとしての使い方が想像できます。

これからライブラリのバージョンが更新されて機能を自由に使えるようになればメインMCUとしても性能が発揮できると思います。

安価開発基板Mh-Tiny88

準備

nanoCH32V003への書き込みにはWCH-LINKEを経由して書き込みを行います。
(USBコネクタは使用しません)
以下にWCH-LINKEと設定アプリケーションでの設定方法を記載します。

書き込み装置(WCH-LINKE)

nanoCH32V003へのスケッチの書き込みには、WCH-LINKEを使用します。

注意 : [WCH-LINKE]です。[WCH-LINK エミュレータ]では使用できません。
外観も品名も似ているのでよく確認して購入してください。

Ali Expressで送料込み \700強から\1,000で購入できます。
国内でも秋月さんから購入できます。

設定アプリケーション

ここからWCH-LinkUtilityをダウンロードします。(中国WCHサイト)

②ダウンロードしたZipファイルを解凍します。
 回答したフォルダからWCH-LinkUtility.exeを実行します。

 ※セキュリティに関するメッセージが表示されるので、「実行」を選択します。
 自己責任で実行してください。

③アプリケーションを以下画像の手順で設定します。

ここまでの手順で、Arduino環境から書き込むための装置の準備ができました。

ケーブルの接続

WCH-LINKEとnanoCH32V003をジャンパワイヤで接続します。
nanoCH32V003の後方のスルーホールに3ピンともに接続します。
画像はスルーホールにテストワイヤ(秋月)で導通させて書き込みを行っています。

nanoCH32V003配線WCH-LINKE
3V33V3
GNDGND
DIOSWDIO/TMS
※テストワイヤに緑がないので黄色を使用しています。

基板の後方に書き込みに必要な端子が集中していますが、以下の配線での書き込みもできます。
こちらは5Vを印加していますが、この方法では3.3Vが使用できます。
また、スケッチの書き込みはPD1から行うこともできます。

nanoCH32V003配線WCH-LINKE
5V5V
GNDGND
PD1SWDIO/TMS
※テストワイヤに緑がないので黄色を使用しています。

WCH-LINKEとパソコンをUSBケーブルで接続します。

ライブラリ

ボードライブラリ

Arduino IDEのボードマネージャからのライブラリのインストールとボードの選択をします。

ボードマネージャのURLhttps://github.com/openwch/board_manager_files/raw/main/package_ch32v_index.json
検索WCH
ボードライブラリCH32 MCU EVT Boards by WCH x.x.x※
選択するボードツール > ボード > CH32 MCU EVT Boards > CH32V00x
※ x.x.x 動作確認は1.0.2を使用しています。

スケッチの書き込み

書き込み前の注意 : GPIOのPD1に機能を設定すると次回からスケッチの書き込みができなくなります。

COMポートの選択では、WCH-LINKEのポート番号が表示されます。
WCH-LINKE経由でスケッチの書き込みを行うので、WCH-LINKEのポート番号を選択し、スケッチの書き込みボタンを押下することで書き込みできます。

基本スケッチ

ボタンLED

説明

タクトボタンとLEDの組み合わせの動作をします。
タクトボタンを押している間LEDが点灯し、離すと消灯します。

配線

3.3V -> タクトスイッチ -> GPIO(PC2)
GPIO(PC1) -> 保護抵抗(200Ω) -> LED -> GND

スケッチ
#define PIN_LED (PC1)
#define PIN_BUTTON (PC2)

void setup() {

  pinMode(PIN_LED, OUTPUT);
  pinMode(PIN_BUTTON, INPUT_PULLDOWN);
}

void loop() {

  //ボタンを押したらLEDが点灯、離したら消灯します。
  long Stat = digitalRead(PIN_BUTTON)  ;

  digitalWrite(PIN_LED, Stat);
}
結果

ボタンが押下されるとLEDは点灯しました。
ボタンが離されるとLEDは消灯しました。

コメント

タイトルとURLをコピーしました