Hobby Lab 趣味のモノ作り実験のサイトです。
Software 開発環境 CH32 開発環境_Arduino
1.Arduinoで開発
 (1)WCH-LinkE に接続して開発
 (2)IDEの設定(WCH-LinkE)
 (3)USBに接続して開発
 (4)IDEの設定(USB)
 (5)プログラミング

Pr:Prプロセッサ関係
PrP:プロセッサ
動作比較
 STM32F動作比較
 CH32V203&STM32F 動作比較
 arduino動作比較
raspberrypi関係
 RaspberryPiハード
CH32V関係
 -CH32V開始
 -203K8T6(32Pin)開始
 -203C8T6(48P)開始
 -003J4M6(8Pin)開始
 -003F4P6(20Pin)開始
 -Moun River StudioⅡ
 プログラミング!
  203_GPIO関係
  203_TIME関係
  203_TIME Encoder
  203_I2C関係
  203_1-Wire関係
  003_DS18B20テスター
  USART(UART)関係
  DS18B20をModBus制御
 -マニュアル
 203データシート
 203取説
  MBA メモリとバス方式
  PWR 電力制御
  RCC リセット・拡張・クロック
  BKP バックアップレジスタ
  CRC 巡回冗長検査
  RTC リアルタイムクロック
  GPIO GPIOと代替機能
  DMA ダイレクトメモリアクセス制御
  ADTM 高度な制御タイマー
  GPTM 汎用タイマー
  BCTM 基本タイマー
  USART 同期非同期通信
arduino関係
 ESP12関係
 (a)ESP-8266D1mini注意
PrP:その他  RS485ドライバー
 CP2102 BRIDGE
 WCH-LinkEエミュレーター

Sf:IDE 開発環境
SfI:STM32
 STM32CubeIDEでプログラム
 HALと直接レジスター操作の速度
SfI:CH32
 MounRiver Studioでプログラム
SfI:Arduino
各ボード毎の設定
 Uno 設定
 Mega2560 設定
 DUE_CH340 設定
 ESP_WROOM02 設定
 ESP12F_D1mini 設定
 ESP32 設定
 CH32V 設定
ライブラリー
 OneWire使い方
その他
 日本語リファレンス(外部リンク)
 WiFi Macアドレスを調査
Sf:OS関係
SfO:Mint 関係
 PCへMint導入
 アプリ導入
 その他1
 アイコンを作る
SfO:Ubuntu 関係
 PCへUbuntu導入
 アプリ導入
SfO:RaspberryPi 関係
はじめに
 RaspberryPiへOS導入
 アプリ導入
 Programming
シェル・コマンド関係
 LXTerminal
 sed
 i2ctools
I/O・アプリ関係
 RealVNCとViewer
 IO動作確認
 MySQL
 Python
 raspberrypiハード
Sf:Server 関係
SfS:レンタルサーバー
 CORE-X
SfS:Windowsサーバー
 XAMPPの概要と導入
 Note XAMPP
 Note XAMPP Err
 Note Apache
 Note PHP
 Note MyQSL
Sf:Programming関係
C 関係
 C言語でプログラムミング
Python 関係
はじめに
 RaspberryPi開始
 Windows開始
共通事項
 プログラミングNote
 パッケージ導入 pip
 標準ライブラリ
 Serialライブラリ
 SMBusライブラリ
HTML関係
 開始とNote
Sf:AP アプリ関係
SfA:エディタ
SfA:回路図CAD
SfA:回路シミュレータ
 シミュレーションの設定
 色の設定
 電源設定設定
SfA:リモートソフト
Sf:Pt プロトコル関係
SfPt:MODBUS
Sf:Otgers その他
?>

1.Arduinoで開発

(1)WCH-LinkE に接続して開発

a.WCH-LinkEのモード状態と表示他
ARMモードRISC-Vモード

LED 青赤点灯

LED 赤点灯
MPUの命令セットアーキテクチャ(ISA)の一種にARMとRISC-Vとがある。
※ISAとは Instruction Set Architecture の略でCPUが直接解釈して実行できる機械語の仕様(利用できるレジスタの種類や命令を実行した際の動作)を定めたものです。
比較表
項目ARMRISC-V
ライセンス料必要不要
MPUCortex-MなどCH32xxxなど
WCH-LinkE は ARMモード と RISC-Vモード 共に対応している。
CH32V203 は RISC-Vモード にする必要があります。
最初の状態は ARMモード になっていました。
これを変更する場合に必要なプログラムが WCH-LinkUtility ですが2025年7月20日現在では Windows 用しか無い。

b.WCH-LinkEのモード変更方法
(a)変更用のアプリ
 私が調べた限りではアプリは2種類有。
アプリ名Windows,MacLinux
WCH-LinkUtility
MounRiver Studio

(b) WCH-LinkUtility アプリのダウンロードと起動
変更に必要なプログラムは Windows なので注意下さい。
プログラムのダウンロード先はWCH-LinkUtility.ZIP でダウンロードできます。 ダウンロードしたファイルを解凍して『WCH-LinkUtility.exe』を起動させると下図の画面が表示されます。

(b)ファームウェアのアップデート
メニュー「Target」の [ Connect WCH-Link ] を選択。


アップデートするかの問に『はい』をクリック
 アップデート完了で Operation Result が変化する。
  ⇒ 

(c)RISC-Vモードへ変更
Active WCH-Link Mode:を [ WCH-LinkRV ] に選択して「Set」をクリック

画面左上の core を [ RISC-V ] に選択する。 続いて画面下 Connected WCH-Link Lisst の Refresh ボタンをクリックすると [ RISC-V Link ] を選ぶ事ができようになったと思います。

RISC-V Link で WCH-LinkE のLEDは赤だけが点灯しているはずです。 これで Linux でも接続できるはず。

c.WCH-LinkEとMPU端子の接続方法
WCH-LinkECH32V203説   明
5V5V外部で5V→3.3V電圧変換があり、MPUへ給電している場合接続
3V33V3(VDD)MPUへ直接接続する場合は5Vでなく3V3をVDDに接続する。
GNDGND
SWDIOPA13
SWCLKPA14

(2)IDEの設定(WCH-LinkE)

[ファイル] [環境設定] [追加のボードマネージャのURL]に以下URLを入力する。
https://raw.githubusercontent.com/verylowfreq/board_manager_ch32/main/package_ch32v_index_sz.json
a.インストールする。
 ボードマネージャ名は CH32V Boards by M.S.
b.ツールの項目、ボード以下の選択内容
項目選択内容
ボードCH32V20x
Upload methpdWCH-SWD
シリアルポート絶対選択しない事

もしWCH-SWDで動作しなくなった場合の対処は
a.コマンドで
 ・アプリと設定ファイルを削除
  sudo apt purge arduino
 ・依存関係で不要パッケージを削除
  sudo apt purge arduino
b.その他hoomに有るファイルを削除。
  『Arduino』と「.arduino15」を削除。
  『』はディレクトリー「」は隠しディレクトリーです

その他URL
https://github.com/openwch/board_manager_files/raw/main/package_ch32v_index.json
これは203GとCシリーズのみ対応しているのでK8T6 32pinには対応していないようだ。また通信もSWDだけでISPが無いので USBダイレクト接続には対応していないと思われる。
CH-LinkE に接続して開発プログラムの書き込みはUSB接続と違って BOOT や リセットボタン の操作は不要だ。
このためUSB接続より良いと思う。

(3)USBに接続して開発

a.Linuxでの対応
Windowsと違いLinux(私はmintを使用しています。)では下記のUSB定義ファイルを登録する必要が有る。
通信に必要なキーワードは、wchisp
GitHubNote for Linux
『Linux に関する注意』が記載されており、ここには udev ルールの設定が必要と記載されている。
If you are using Linux, you need to set the udev rules for your device.
# /etc/udev/rules.d/50-wchisp.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="4348", ATTRS{idProduct}=="55e0", MODE="0666"
# or replace MODE="0666" with GROUP="plugdev" or something else
これは、『/etc/udev/rules.d/』に『50-wchisp.rules』のファイルを作成してそのファイルに 『SUBSYSTEM=="usb", ATTRS{idVendor}=="4348", ATTRS{idProduct}=="55e0", MODE="0666"』を記載して usbのルールに再読込させる。
例えば端末からエディター『vim』で作成する場合は
hobbylab@GZBOX:~$ sudo vim /etc/udev/rules.d/50-wchisp.rules
 [ Vim で ファイル内を編集して記録する。その後 udevのルールシステムを再起動する。]
hobbylab@GZBOX:~$ sudo udevadm control --reload-rules
となる。

(4)IDEの設定(USB)

IDEの設定で注意する事項としては、「ツール」、「ボード内の Upload method」が [ WCH-ISP ] になっていることを確認すること。

(5)プログラミング

プログラムを記載してArduino IDE の『マイコンボードに書き込む』ボタンを押す前に
開発ボートの「BOOT」ボタンを押しながら「リセット」ボタンを押すこと。
その後 Arduino IDE の『マイコンボードに書き込む』ボタンを押すとメッセージの一部で文字色が赤字となったが、エラーは無さそうで、プログラムを書き込む事に成功した。
メッセージ


・プログラム内容は
void setup() {
pinMode(PB5,OUTPUT);
}
void loop() {
digitalWrite( PB5, HIGH );
digitalWrite( PB5, LOW );
}

・結果:PB5の波形周波数は890kHzと私が持っている最速の Arduino DUE-CH340 で240KHZから見ても相当早い。
直接ハードを制御したプログラムへ変更した場合の周波数が楽しみだ。※後で MounRiverStudio により作成した結果 6MHz だった。

なお上記の様に、開発ボートの「BOOT」ボタンを押しながら「リセット」ボタンを押さないで『マイコンボードに書き込む』ボタンを押すとUSBディバイスが無いと『エラー』になります。
エラーメッセージ




































更新日 2025/11/25 19:38  管理者 平林 剛Hirabayashi Takeshi