Hobby Lab 趣味のモノ作り実験のサイトです。
部品 プロセッサー他 CH32V 開始
1.概要
 1.1 購入したMCUの機能一覧
2, プログラミング注意事項
 2.1 CH32V203関係
 2.1.1 BOOT端子と起動モード
 2.1.2 BOOT端子の通常制御ピン
 2.1.3 NRST端子
 2.1.4 TAMPER-RTC端子(C8T6)
 2.1.5 VBAT端子(C8T6)
 2.1.6 VDDA端子(C8T6)

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エミュレーター
Pr:Wire 電線関係
Pr:Resistance 抵抗
Pr:Capacitor コンデンサ
Pr:Coil コイル
Pr:PassiveElmt 受動素子
Pr:Diode ダイオード関係
Pr:OPAMP オペアンプ関係
PrO:送受信機  Si4735
PrO:オペアンプ  LM324
 LM358
Pr:Tr トランジスタ関係
2SC1815
 リレードライバー設計
 アンプ設計
 発振器
TLP152
 TLP152テスト
TLP2361
 TLP2361テスト
TLP5754
 TLP5754テスト
Pr:Source 電源関係  ツェナーダイオード
 TL431
 LM317
PrS:Downモジュール
 EGS002_IR2110S
 SKU011012
 ACDC02
 XH_M299
 LM2596
 Mini360_MP23070N
 DROK
 WH140
PrS:UPモジュール
 MT3608
PrS:充電モジュール
 TP4056
Pr:Sensor_AD_時計等
PrS:電圧、電流
ADS1115 16bit4CH I2C A/D
 Hardware
 RaspberryPi_コマンド接続
 RaspberryPi_Python
 Arduino
 CH23V203 MounRiverStudioⅡ
INA226 I2C 直流電圧電流
 Hardware
 Arduino
 RaspberryPi_Python
WCS 電流ホール素子
 Hardware
PrS:温度、気圧、湿度、照度
BNE280 I2C 気圧,湿度,気温
 Hardware
 Arduino
 RaspberryPi_Python
BH1750 I2C 照度
 Hardware
 Arduino
 RaspberryPi_Python
DS18B20 1-Wire 温度計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:時間、日時
DS3231 I2C 時計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:表示器
MAR3953 320X480 3.95"
 概要と線や点を描く
 フォントを描く
SSD1306 I2C 0.96"OLED
 Hardware
 Arduino
 RaspberryPi_Python
Pr:Old Processor他

1 概要


CH32V203K86ボード
370円!
久しぶりに秋月電子のホームページを見て、『CH32V203K8T6』と言う MCU がなんと
1個120円で販売されていました。
外形が9mm角、コアが32bit、クロックが144MHzとコストから見ると素晴らしい様に見えたので10個購入。
その他『32ピンQFP変換基盤』150円 MPUのPin間隔2.54mmに変換するものとプログラミングするために『WCH-LinkEエミュレータ』980円というプログラムの書き込みやデバッグするものを購入しました。 IDEはMounRiver Studio Ⅱを使うことにしましたが、久しぶりのプログラムで真っすぐには進むことはできませんでした。

CH32V003F4P6開発用ボード
2個330円(送料込) 安い!
このHC32VというMCU(Micro Controller Unit)は

RISCーⅤ(リスクファイブ)

と言うなんか良さそうな言葉で設計されたCPUでAIチップや組み込みシステムなどでは、次世代の有力なアーキテクチャとして注目されているそうです。
その後、CH32V203C8T6マイコンボードや、もっと機能が多いCH307VCT6のボードも購入してしまいました。 また、コストが非常に安価なCH32V003と言うMCUも購入!
泥沼にハマった状態です。
日本製の RISC-V MCU が個人で購入できれば良いのですが、買いやすいものは現在 日本製は無く、Raspberry Pi Pico 2 (の一部分)も有りますが、殆どは CH32V ではないかと思います。残念!

1.1 購入したMCUの機能一覧

CH32V 003 203 307
型番 J4M6F4P6 K8T6C8T6VCT6
CPU clock speed 48MHz48MHz144MHz 144MHz 144MHz
Package SOP8TSSOP20LQFP32 LQFP48 LQFP100
Flash memory 16K 16K 64K 64K 256K(2)
SRAM 2K 2K 20K 20K 64K(2)
DMA Channels 7 7 8 8 8
OPA x 2 2 2 2 4
GPIO
Independent supply VIO
6 18 26 37 80
--------
AdvancedControlTimer1 1 1 1 4
GeneralPurposeTimer 1 1 3 3 4
Basic -- -- -- -- 2
Watchdog 2 2 2(3)2(3)2(3)
SysTick(64-bit) -- -- supported supported supported
RTC -- -- supported supported supported
SystemClockSource 3 3 ? ? ?
ADC Chinnel 6 8 10@2 10@2 16@2
USART 1 1 2 4 8
SPI -- 1 1 2 3
I2C 1 1 1 2 2
CAN -- -- 1 1 2
USBD -- -- 1 1 --
USBHD -- -- -- 1 1
USB(HS+PHY) -- -- -- -- 1
Ethernet -- -- -- -- 1(4)
DVP -- -- -- -- 1
FSMC -- -- -- -- 1
RNG -- -- -- -- 1
SDIO -- -- -- -- 1
自前Module 0 2 0 2 2
自前Parts 20 20 10 0 0
(2) 256Kフラッシュメモリ+64K SRAM搭載製品は、ユーザーがワードを選択して、(192Kフラッシュメモリ+128K SRAM)、(224Kフラッシュメモリ+96K SRAM)、(256Kフラッシュメモリ+64K SRAM)、(288Kフラッシュメモリ+32K SRAM)のいずれかの組み合わせとして設定できます。
(3) (WWDG + IWDG)
(4) 1G MAC+10M PHY




2 使用上の注意事項

2.1 CH32V203

CH32V203にはCH32V003には無いいくつかPinがありその説明をここでする。

2.1.1 BOOT端子と起動モード

BOOT0BOOT1起動モード名概要
0xメインフラッシュユーザープログラムをフラッシュメモリ(0x0800_0000)から実行する
(通常動作)。
10システムメモリ内蔵ブートローダーから起動
USB/UART経由でファームウェアを書き込むモード。
11内部SRAMSRAM上に配置されたプログラムから起動
(デバッグ用)。
通常の動作: BOOT0をプルダウン(0)、BOOT1(PB2)は通常プルダウン(0)または不要で設定します。
USB/UART書き込み: BOOT0をプルアップ(1)、BOOT1(PB2)をプルダウン(0)にしてリセットします。

2.1.2 BOOT端子の通常制御ピン

BOOT0とBOOT1は、基本的には汎用的なGPIOや制御端子として使用するのは不適ですが、条件付きで利用できる場合があります。
(1)BOOT0ピン
使用不可(推奨): BOOT0は起動時のハードウェア論理判定に専用されていることが多く、内部プルアップ/プルダウンがありません。一般に抵抗でGNDに落として運用するため、GPIO機能は持っていません。
代替案: ユーザープログラム中であれば、BOOT0ピンを汎用的な入力として読み取ることは可能かもしれませんが、起動モードが毎回変わるリスクがあるため避けるべきです。
(2)BOOT1ピン
使用可(条件付き): BOOT1は、QFP32/48パッケージなどではPB2ピンと兼用されています。 条件: 電源投入時(リセット直後)に「0」の状態を維持していれば、その後のプログラム実行中は他のGPIOと同様に汎用I/O(入力または出力)として使用できます。 注意点: を外部回路で「1」(\(3.3\text{V}\))にプルアップした状態でリセットすると、意図しないモード(SRAMブート)で起動してしまいます
結論
USB接続やSRAMからの起動をしない場合
 BOOT0: ハード的にプルダウンしておく。
 BOOT1 (PB2):使用可能
USB接続する場合
 BOOT0: ハード的にプルダウン、プルアップできるようにしておく。
 BOOT1 (PB2):同上又は内部SRAMを使用しない場合はハード的にプルダウンしておくこと。

2.1.3 NRST端子

NRST端子は外部からMCUをリセットさせるための端子です。
WCH-LinkEからリセット制御させたい場合はこの端子をWCH-LinkEのRST端子に接続します。
手動でリセットする場合は通常プシュボタンスイッチ(以下スイッチと呼ぶ)で回路構成すると思われますが、外部にプルアップ抵抗を接続し、GND間にスイッチを入れますが、接点のチャタリングが懸念される場合は、コンデンサーをスイッチの接点と並列に入れます。
プルアップ抵抗は10(kΩ)程度、コンデンサは0.1〜1(uF)程度を入れます。

2.1.4 TAMPER-RTC端子(C8T6)

CH32V203に搭載されている PC13ピン(TAMPER-RTC) は、主にバックアップドメイン(低消費電力領域)に属する特殊なピンです。
(1)TAMPER-RTC(PC13)のRTC関連機能
PC13ピンは、RTC(リアルタイムクロック)やBKP(バックアップレジスタ)と連動して以下の機能に使用できます。

TAMPER(タンパー検出)入力: 機器の筐体開けなどを検知するセキュリティ機能です。
ピンへの入力信号(エッジやレベル)をトリガーにして、BKP(バックアップレジスタ)内の秘密データや暗号鍵をハードウェアが自動的に高速消去します。

RTC アラーム出力: RTCで設定した時刻(アラーム)に達した際、外部へパルス信号を出力します。

RTC 秒パルス出力: RTCの1秒ごとの更新タイミング(秒周期)に合わせてパルスを出力します。

RTC キャリブレーションクロック出力: RTCの時計制度を校正するため、RTCクロックを64分周した信号を出力できます。

(2)PC13をGPIOとして使用する場合の注意事項
PC13ピンは通常のGPIOとしても機能しますが、内部の物理構造が他の標準GPIO(PA0など)とは異なるため、回路設計およびソフト開発において以下の厳格な制限があります。
① 出力速度と駆動能力の制限(非常に弱い)
最大周波数は 2MHz までに制限されています(高速なトグルは不可)。
最大負荷容量は 30pF までです。
電流源(ソース電流)として使用できません。
LEDの直接駆動など、連続して電流を吸い込み・吐き出しする回路を接続するとマイコンが破損するか、バックアップ領域の動作に支障をきたします。

② 電源喪失時(VBAT駆動時)の挙動
主電源(V_DD)が落ちてボタン電池(V_BAT)によるバックアップ動作に移行した場合、GPIOとしての動作は完全に停止します。
(V_BAT) 駆動中は、前述した「TAMPER入力」「RTCアラーム」「秒出力」のいずれかの機能としてのみ動作を継続できます。

③ リセットによる影響を受けない
バックアップ領域のレジスタによって制御されているため、通常のシステムリセット(N_RST) ピンやソフトウェアリセット) がかかってもPC13ピンの状態はリセットされず維持されます。
初めてバックアップドメインに電源(V_DD) または(V_BAT)が投入された初期状態では、GPIOではなく「メイン機能(TAMPER/RTC用)」の状態で起動します。

回路設計の注意点
PC13をGPIOとして使う場合は、信号線の引き回しを最小限にし、必ず高インピーダンスの入力(FETのゲート、ICのイネーブルピンなど)や、数mAも流さない軽量な信号線として使用してください。
LEDなどを光らせたい場合は、割り当てを他のPAやPBポートへ変更することを強く推奨します。

2.1.5 VBAT端子(C8T6)

(1) VBATT端子とは?
VBATT(VBAT)端子は、RTC(リアルタイムクロック)およびバックアップレジスタ用の電源端子です。

用途: 主電源(VDD: 3.3V)が切れている間に、コイン電池など(1.8V〜3.6V)を接続して、時間(RTC)や設定データを保持するために使用します。

特徴: VDDが有効な場合は内部電源から供給され、VDDがなくなると自動的にVBATに切り替わります。

(2) 使用しない場合の処理
機能やバックアップ機能(電源を切っても時間を保持したいなど)を使わない場合、VBATT端子は以下のように処理してください。

処理方法: VDD端子(3.3V)に直接接続(直結)します。

理由: VBATTは入力端子であるため、オープンのままにしておくとノイズを拾ったり、予期せぬ動作をしたりする可能性があるためです。

2.1.6 VDDA端子(C8T6)

DDA(アナログ電源)は、ノイズの影響を避けてアナログ回路(ADC、DACなど)の精度を保つため、デジタル電源(VDD)とは分離した構成が良いができないと思われるので、VDDから電源を取る場合ノイズに対する配慮をする。
(1)基本的な回路構成
 ・分離とフィルタリング: VDD(デジタル電源)とVDDAの間に、ノイズフィルターとしてフェライトビーズまたは抵抗を挿入します。
 ・バイパスコンデンサ: VDDAピンの近くに、ノイズを除去するためのコンデンサを接続します。

(2)回路構成の例
 ・VDD (3.3V) --- [フェライトビーズ/10Ω抵抗] ---- VDDA
 ・VDDA ---- [0.1µF セラミックコンデンサ] ---- VSSA (GND)
 ・VDDA ---- [10µF 電解/タンタルコンデンサ] ---- VSSA (GND) (余裕があれば追加)

注意点
 ・VSSA (アナログGND): VSSAピンは、デジタルGNDとは別に配線し、基板の電源入力部などで一点接続にするのが理想的です。
 ・VBAT: バックアップ機能を使用しない場合、VBATピンはVDDに直接接続します。
 ・安定性: アナログ動作(ADC等)の精度が重要である場合、デジタルノイズが混入しないよう配線に注意してください。

ADCや温度センサーを精度良く利用したい場合は、このようにデジタル電源(VDD)から少し距離を置いた、静かで安定した電源を供給する回路設計が必要です。




































更新日 2026/05/23 13:28  管理者 平林 剛Hirabayashi Takeshi