Hobby Lab 趣味のモノ作り実験のサイトです。
部品 プロセッサー他 CH32V 203K8T6_開始
1 概要
2 仕様と試験用回路例
3 開発環境の概要
4 最初の動作
4.1 動作確認
4.2 外部発信子は必要か1
4.3 外部発信子は必要か2

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:Memory  24C128(16kB)
PrP:その他  RS485ドライバー
 CP2102 BRIDGE
 WCH-LinkEエミュレーター
Pr:Wire 電線関係
Pr:Resistance 抵抗
Pr:Capacitor コンデンサ
Pr:Coil コイル
Pr:PassiveElmt 受動素子
Pr:Diode ダイオード関係
Pr:OPAMP オペアンプ関係
PrO:送受信機  Si4735について
 Si4735ラジオを作って見よう1
 Si4735ラジオを作って見よう2
 Si4735テスト中に判ったこと1
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.概要

久しぶりに秋月電子のホームページを見て、『CH32V203K8T6』と言う MCU がなんと1個120円で販売されていました。 外形が9mm角、コアが32bit、クロックが144MHzとコストから見ると素晴らしい様に見えたので10個購入。 その他『32ピンQFP変換基盤』150円 MCUのPin間隔2.54mmに変換するものとプログラミングするために『WCH-LinkEエミュレータ』980円というプログラムの書き込みやデバッグするものを購入しました。 うまく行けば MODBUS 接続の測定器を試作してみたい。
と言うことで、調査を始めた。




2.仕様と試験用回路例

CH32V203K8T6回路図
CH32V203K8T6仕様





3.開発環境の概要

(1)IDEの種類
 ※IDEとは Integrated Development Environment の略で統合開発環境と呼ばれている。
 ・Arduino
 ・MounRiver Studio
 がある

(2)CH32V203K8T6 と開発用パソコンを接続する方法
 ・USBによる接続
 ・WCH-LinkEによる接続
 がある。

(3)上記開発環境と接続およびOSの組み合わせ
IDEOSUSBWCH-LinkE
ArduinoWindows○○
Linux○○
MounRiver StudioWindows×○
Linux×○



4.最初の動作

4.1動作確認

動作確認用の回路は秋月電子で 32pinQFP変換基盤 150円とWCH-LinkEエミュレーター (980円)を購入し、 ブレッドボードで最低限の配線とした。
LEDをPB0に接続し、点滅するプログラムで動作確認を実施した。
回路図は右図のとおり、発信回路は内部回路を使用する。




動作確認用のプログラムは下記の通り


プログラム起動時の通信状況とLEDが約1.0秒でON,OFFを繰り返す。
 

4.2外部発信子は必要か1

LEDの点灯ではCH32V203K8T6において、外部クリスタル(水晶振動子)は必須ではありません。
外部クリスタルを一切接続しなくても、マイコンを動作させ、プログラムを書き込んで動かすことが可能です。
これは、マイコンの内部に高精度な内蔵RC発振器(HSI: 約8MHz)が標準で搭載されているためです。
ただし、「どのようなアプリケーション(機能)を作るか」によって、外部クリスタルを載せるべきかどうかのトレードオフが変わります。
以下の基準を参考に判断してください。

(1)外部クリスタルが「不要」なケース(内蔵RC発振器で十分な場合)
• 一般的な電子工作・制御: Lチカ、タクトスイッチの読み取り、モーター制御、LEDの点灯制御など。
• 一般的なシリアル通信(UART/USART): WCH-LinkEを繋いでシリアルモニタにログ(printf)を出す程度であれば、内蔵RC発振器の精度でも十分に通信可能です。
• メリット: 部品代(クリスタルとコンデンサ2個)が浮き、基板のスペースを節約でき、配線の手間も減ります。

(2)外部クリスタルが「必須、または強く推奨」されるケース
• USB機能(HID、仮想COMポート、大容量ストレージなど)を使用する場合
CH32V203の大きな強みであるUSB機能(USB 2.0 Full Speed)を利用する場合、非常に厳密なクロック精度(数千ppm以下)が求められます。
内蔵RC発振器は温度変化などで周波数がズレやすいため、USB通信を行う場合は、外部に「8MHz」または「12MHz」の水晶振動子を接続することが必須となります。

正確な時間を刻むタイマーや時計(RTC)が必要な場合
「1秒の狂いもなくカウントしたい」「時計(リアルタイムクロック)を実装して時刻を保持したい」という場合は、 内蔵RCでは温度によって時間が進んだり遅れたりします。
この場合は、メインクロック用の水晶振動子(8MHz等)や、時計専用の低速水晶振動子(32.768kHz)を接続する必要があります。

4.3外部発信子は必要か2

具体的にディジタルフィルターのプログラムでは外部発信子は不要か?
デジタルフィルターの処理そのものだけであれば、外部クリスタル(水晶振動子)は不要であり、内蔵RC発振器(HSI)だけで十分にプログラムを動作させることができます。
ただし、デジタルフィルターを機能させるためには「一定の時間間隔(サンプリング周期)」でA/D変換を行う必要があります。
この「サンプリング周期にどれだけの正確さを求めるか」によって、外部クリスタルの必要性が変わります。
以下の判断基準(トレードオフ)を参考にしてください。

(1) 内蔵RC発振器(外部クリスタル不要)で十分なケース
• 大まかなノイズ除去・波形のスムージングが目的の場合
センサー(温度、気圧、光、大まかな電圧など)の細かな値をデジタルフィルター(移動平均フィルターや、単純なローパスフィルターなど)に通して、 値を滑らかにしたいという用途であれば、内蔵RC発振器で十分です。
・理由:
内蔵RC発振器は温度変化などで「1.000ミリ秒」の周期が「1.005ミリ秒」や「0.995ミリ秒」にわずかに揺らぐ(数%程度の誤差)ことがありますが、 一般的なフィルター処理においてこの程度のブレは計算結果にほとんど影響を与えないためです。

(2) 外部クリスタルを載せる(強く推奨される)ケース
• 厳密な周波数解析(FFT処理など)や特定の周波数だけを完全にカットしたい場合
「正確に50Hzの商用電源ノイズ(ハムノイズ)だけを急峻なデジタルフィルターでカットしたい」「音声信号をサンプリングして特定の周波数成分を綺麗に抽出したい」といった場合は、 外部クリスタルが必要です。
・理由:
サンプリング周期(時間を計るものさし)が数%でも伸び縮みしてしまうと、デジタルフィルターの「カットオフ周波数」の 計算式自体が物理的にズレてしまい、狙った通りのフィルタリング性能が出なくなるためです。

もし今回の目的が「A/Dコンバータで読み取ったセンサー値のパタパタしたブレを、移動平均などで綺麗に落ち着かせたい」という程度であれば、 外部クリスタルは完全に不要です。回路をシンプルにするためにも、まずは内蔵RC発振器だけで進めることをおすすめします。
逆に、オーディオ信号の処理や、ミリ秒単位で完全に均一なタイミングを維持し続けなければならない高度な信号処理を行う場合は、 8MHzまたは12MHzの水晶振動子とコンデンサ(22pFなど)を5ピン・6ピンに載せておくのが安全です。




































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