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)は
その後、CH32V203C8T6マイコンボードや、もっと機能が多いCH307VCT6のボードも購入してしまいました。 また、コストが非常に安価なCH32V003と言うMCUも購入!
泥沼にハマった状態です。
日本製の RISC-V MCU が個人で購入できれば良いのですが、買いやすいものは現在 日本製は無く、Raspberry Pi Pico 2 (の一部分)も有りますが、殆どは CH32V ではないかと思います。残念!
(2) 256Kフラッシュメモリ+64K SRAM搭載製品は、ユーザーがワードを選択して、(192Kフラッシュメモリ+128K SRAM)、(224Kフラッシュメモリ+96K SRAM)、(256Kフラッシュメモリ+64K SRAM)、(288Kフラッシュメモリ+32K SRAM)のいずれかの組み合わせとして設定できます。
(3) (WWDG + IWDG)
(4) 1G MAC+10M PHY
1個120円で販売されていました。
外形が9mm角、コアが32bit、クロックが144MHzとコストから見ると素晴らしい様に見えたので10個購入。
その他『32ピンQFP変換基盤』150円 MPUのPin間隔2.54mmに変換するものとプログラミングするために『WCH-LinkEエミュレータ』980円というプログラムの書き込みやデバッグするものを購入しました。 IDEはMounRiver Studio Ⅱを使うことにしましたが、久しぶりのプログラムで真っすぐには進むことはできませんでした。

CH32V003F4P6開発用ボード
2個330円(送料込) 安い!
RISCーⅤ
と言うなんか良さそうな言葉で設計されたCPUでAIチップや組み込みシステムなどでは、次世代の有力なアーキテクチャとして注目されているそうです。その後、CH32V203C8T6マイコンボードや、もっと機能が多いCH307VCT6のボードも購入してしまいました。 また、コストが非常に安価なCH32V003と言うMCUも購入!
泥沼にハマった状態です。
日本製の RISC-V MCU が個人で購入できれば良いのですが、買いやすいものは現在 日本製は無く、Raspberry Pi Pico 2 (の一部分)も有りますが、殆どは CH32V ではないかと思います。残念!
1.1 購入したMCUの機能一覧
| CH32V | 003 | 203 | 307 | ||
|---|---|---|---|---|---|
| 型番 | J4M6 | F4P6 | K8T6 | C8T6 | VCT6 |
| CPU clock speed | 48MHz | 48MHz | 144MHz | 144MHz | 144MHz |
| Package | SOP8 | TSSOP20 | LQFP32 | 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 |
| -- | -- | -- | -- | ○ | |
| AdvancedControlTimer | 1 | 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 |
(3) (WWDG + IWDG)
(4) 1G MAC+10M PHY
2 使用上の注意事項
2.1 CH32V203
CH32V203にはCH32V003には無いいくつかPinがありその説明をここでする。
通常の動作: BOOT0をプルダウン(0)、BOOT1(PB2)は通常プルダウン(0)または不要で設定します。
USB/UART書き込み: BOOT0をプルアップ(1)、BOOT1(PB2)をプルダウン(0)にしてリセットします。
2.1.1 BOOT端子と起動モード
| BOOT0 | BOOT1 | 起動モード名 | 概要 |
|---|---|---|---|
| 0 | x | メインフラッシュ | ユーザープログラムをフラッシュメモリ(0x0800_0000)から実行する (通常動作)。 |
| 1 | 0 | システムメモリ | 内蔵ブートローダーから起動 USB/UART経由でファームウェアを書き込むモード。 |
| 1 | 1 | 内部SRAM | SRAM上に配置されたプログラムから起動 (デバッグ用)。 |
USB/UART書き込み: BOOT0をプルアップ(1)、BOOT1(PB2)をプルダウン(0)にしてリセットします。
2.1.2 BOOT端子の通常制御ピン
BOOT0とBOOT1は、基本的には汎用的なGPIOや制御端子として使用するのは不適ですが、条件付きで利用できる場合があります。
(1)BOOT0ピン
(1)BOOT0ピン
使用不可(推奨): BOOT0は起動時のハードウェア論理判定に専用されていることが多く、内部プルアップ/プルダウンがありません。一般に抵抗でGNDに落として運用するため、GPIO機能は持っていません。
代替案: ユーザープログラム中であれば、BOOT0ピンを汎用的な入力として読み取ることは可能かもしれませんが、起動モードが毎回変わるリスクがあるため避けるべきです。
(2)BOOT1ピン代替案: ユーザープログラム中であれば、BOOT0ピンを汎用的な入力として読み取ることは可能かもしれませんが、起動モードが毎回変わるリスクがあるため避けるべきです。
使用可(条件付き): BOOT1は、QFP32/48パッケージなどではPB2ピンと兼用されています。
条件: 電源投入時(リセット直後)に「0」の状態を維持していれば、その後のプログラム実行中は他のGPIOと同様に汎用I/O(入力または出力)として使用できます。
注意点: を外部回路で「1」(\(3.3\text{V}\))にプルアップした状態でリセットすると、意図しないモード(SRAMブート)で起動してしまいます
結論
USB接続やSRAMからの起動をしない場合
BOOT0: ハード的にプルダウンしておく。
BOOT1 (PB2):使用可能
USB接続する場合
BOOT0: ハード的にプルダウン、プルアップできるようにしておく。
BOOT1 (PB2):同上又は内部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)程度を入れます。
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関連機能
(2)PC13をGPIOとして使用する場合の注意事項
回路設計の注意点
(1)TAMPER-RTC(PC13)のRTC関連機能
PC13ピンは、RTC(リアルタイムクロック)やBKP(バックアップレジスタ)と連動して以下の機能に使用できます。
TAMPER(タンパー検出)入力: 機器の筐体開けなどを検知するセキュリティ機能です。
ピンへの入力信号(エッジやレベル)をトリガーにして、BKP(バックアップレジスタ)内の秘密データや暗号鍵をハードウェアが自動的に高速消去します。
RTC アラーム出力: RTCで設定した時刻(アラーム)に達した際、外部へパルス信号を出力します。
RTC 秒パルス出力: RTCの1秒ごとの更新タイミング(秒周期)に合わせてパルスを出力します。
RTC キャリブレーションクロック出力: RTCの時計制度を校正するため、RTCクロックを64分周した信号を出力できます。
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用)」の状態で起動します。
① 出力速度と駆動能力の制限(非常に弱い)
最大周波数は 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ポートへ変更することを強く推奨します。
LEDなどを光らせたい場合は、割り当てを他のPAやPBポートへ変更することを強く推奨します。
2.1.5 VBAT端子(C8T6)
(1) VBATT端子とは?
(2) 使用しない場合の処理
VBATT(VBAT)端子は、RTC(リアルタイムクロック)およびバックアップレジスタ用の電源端子です。
用途: 主電源(VDD: 3.3V)が切れている間に、コイン電池など(1.8V〜3.6V)を接続して、時間(RTC)や設定データを保持するために使用します。
特徴: VDDが有効な場合は内部電源から供給され、VDDがなくなると自動的にVBATに切り替わります。
用途: 主電源(VDD: 3.3V)が切れている間に、コイン電池など(1.8V〜3.6V)を接続して、時間(RTC)や設定データを保持するために使用します。
特徴: VDDが有効な場合は内部電源から供給され、VDDがなくなると自動的にVBATに切り替わります。
(2) 使用しない場合の処理
機能やバックアップ機能(電源を切っても時間を保持したいなど)を使わない場合、VBATT端子は以下のように処理してください。
処理方法: VDD端子(3.3V)に直接接続(直結)します。
理由: VBATTは入力端子であるため、オープンのままにしておくとノイズを拾ったり、予期せぬ動作をしたりする可能性があるためです。
処理方法: VDD端子(3.3V)に直接接続(直結)します。
理由: VBATTは入力端子であるため、オープンのままにしておくとノイズを拾ったり、予期せぬ動作をしたりする可能性があるためです。
2.1.6 VDDA端子(C8T6)
DDA(アナログ電源)は、ノイズの影響を避けてアナログ回路(ADC、DACなど)の精度を保つため、デジタル電源(VDD)とは分離した構成が良いができないと思われるので、VDDから電源を取る場合ノイズに対する配慮をする。
(1)基本的な回路構成
(1)基本的な回路構成
・分離とフィルタリング: VDD(デジタル電源)とVDDAの間に、ノイズフィルターとしてフェライトビーズまたは抵抗を挿入します。
・バイパスコンデンサ: VDDAピンの近くに、ノイズを除去するためのコンデンサを接続します。
(2)回路構成の例・バイパスコンデンサ: VDDAピンの近くに、ノイズを除去するためのコンデンサを接続します。
・VDD (3.3V) --- [フェライトビーズ/10Ω抵抗] ---- VDDA
・VDDA ---- [0.1µF セラミックコンデンサ] ---- VSSA (GND)
・VDDA ---- [10µF 電解/タンタルコンデンサ] ---- VSSA (GND) (余裕があれば追加)
注意点・VDDA ---- [0.1µF セラミックコンデンサ] ---- VSSA (GND)
・VDDA ---- [10µF 電解/タンタルコンデンサ] ---- VSSA (GND) (余裕があれば追加)
・VSSA (アナログGND): VSSAピンは、デジタルGNDとは別に配線し、基板の電源入力部などで一点接続にするのが理想的です。
・VBAT: バックアップ機能を使用しない場合、VBATピンはVDDに直接接続します。
・安定性: アナログ動作(ADC等)の精度が重要である場合、デジタルノイズが混入しないよう配線に注意してください。
ADCや温度センサーを精度良く利用したい場合は、このようにデジタル電源(VDD)から少し距離を置いた、静かで安定した電源を供給する回路設計が必要です。・VBAT: バックアップ機能を使用しない場合、VBATピンはVDDに直接接続します。
・安定性: アナログ動作(ADC等)の精度が重要である場合、デジタルノイズが混入しないよう配線に注意してください。
