本講義の主役である格安RISC-Vマイコン「CH32V003」が、なぜ「コンデンサ1個だけ」で動く驚異の少部品設計なのかを理解します。外部水晶発振器が要らない理由、電源まわりが極端にシンプルな理由、そして書き込みが信号線1本で済む理由——この3つを押さえれば、第3章で設計する回路図がなぜあの形になるのかが理解できます。
1.1 単価数十円マイコン CH32V003 のコアスペック
電子工作のコモディティ化を象徴するデバイスとして、中国WCH(南京沁恒微電子)がリリースしたCH32V003は、世界中のエンジニアに大きな衝撃を与えました。公式直販サイトや大量調達時のチップ単価は十数円〜数十円(秋月電子通商の店頭でも1個40円〜50円程度)という、従来の8bit/16bitマイコンを置き換える破壊的価格でありながら、その中身は32bitのRISC-Vオープンアーキテクチャコアを搭載しています。
本デバイスに採用されている「QingKe V2A」プロセッサコアは、ベース整数命令セットとして、汎用レジスタを32本から16本に削減して回路面積(ダイサイズ)を絞った組込み向けの RV32E を採用し、これにコード密度を向上させる16bit圧縮命令拡張 C を加えた RV32EC 構成となっています(標準の32レジスタ版RV32Iに対する縮小版がRV32Eであり、両者は排他的なベースである点に注意。乗除算命令Mおよび浮動小数点命令Fは非搭載)。
RISC-Vの命令セットは「ベース+拡張」をアルファベットで表記します。
RV32=32bit、E=組込み向けにレジスタを16本に削った縮小ベース、C=命令を16bitに圧縮してFlash消費を減らす拡張、という意味です。乗算・除算(M拡張)や小数計算(F拡張)の専用回路は省かれていますが、これらはコンパイラがソフトウェアで肩代わりするため、使えないわけではありません(その分だけ遅くなる、という理解です)。
【CH32V003F4P6(TSSOP-20)内部リソース構造】 ┌────────────────────────────────────────────────────────┐ │ QingKe V2A コア │ │ - RV32EC 命令セット (32bit RISC-V) │ │ - 最高 48MHz 動作 / 2線式・1線式デバッグ │ ├───────────────────────────┬────────────────────────────┤ │ Flash メモリ: 16 KB │ SRAM (データ領域): 2 KB │ ├───────────────────────────┴────────────────────────────┤ │ 周辺機能 (Peripheral) │ │ - 内蔵オンチップ高精度RC発振器 (24MHz / 48MHz) │ │ - 10bit ADC (A/Dコンバータ) × 1(外部8ch+内部2ch) │ │ - 内蔵LDOレギュレータ (3.3V から 1.5V への内部降圧) │ │ - USART × 1, I2C × 1, SPI × 1, タイマー群 │ └────────────────────────────────────────────────────────┘
Flashメモリ 16KB、SRAM 2KBというスペックは現代の基準からは非常に小さく見えるかもしれません。しかし、オブジェクトサイズを限界まで切り詰める組込みC言語プログラミング(あるいはアセンブリ)の視点に立てば、LEDの制御、各種センサデータの収集とI2C/SPIバスによる上位SoCへの転送、周辺ハードウェアのシーケンス制御、あるいは地域インフラの末端に置かれるIoTノードなどを駆動させるには必要十分なリソースです。
1.2 究極の「最小構成回路」とレギュレータの動作原理
CH32V003の最大の特徴は、その安さだけでなく、動作に必要な周辺部品が「究極に少ない」点にあります。一般的なマイコン(例:従来のAVRやSTM32など)では、安定動作のためにリセットピンのプルアップ抵抗、外部水晶発振器(クリスタル)とロードキャパシタ、さらには電源ピンごとに複数のパスコン(バイパスコンデンサ)を密に配置することが要求されました。
これに対し、CH32V003は以下の内蔵ハードウェア機構により、電源ラインに「100nF(0.1μF)のセラミックコンデンサを1個」接続するだけで、フルスピード(48MHz)動作を達成できるように設計されています。
CH32V003の内部には、工場出荷時にキャリブレーション(校正)された、誤差±1%未満の内蔵RC発振器(HSI: High-Speed Internal)が搭載されています。これにより、周波数の安定度を極端に要求される用途(高精度なUSB通信など)を除き、一般的なシリアル通信(USART)やタイマー処理であれば、高価でフットプリントを圧迫する外部水晶発振器を一本も接続することなく、安定して動作させることができます。
ここで初学者が誤解しやすい点を整理しておきます。CH32V003の外部供給電源(VDD)は 2.7V〜5.5V(標準は3.3Vまたは5V)ですが、超微細化されたプロセッサコアやデジタルロジック回路自体は、リーク電流と消費電力を抑えるために 1.5V という低い電圧で駆動しています。この降圧を行う内蔵LDO(低ドロップアウト)レギュレータと、その平滑化に必要な容量はすべてチップ内部に集積されており、安定化用コンデンサを接続するための外部端子(いわゆるVcapピン)は引き出されていません。ピン互換元であるST社のSTM8でVcap端子が割り当てられていた物理ピン位置は、CH32V003では汎用ポート PD0 に転用されています。したがって設計者が外付けする受動部品は、結局のところ VDD–GND間の100nFセラミックコンデンサ1個だけに集約されます。
【電源デカップリングと内部降圧のメカニズム】
外部 VDD (3.3V) ────┬────────────────[ 内部LDO ]
│ │
┌─┴─┐ ▼ 内部コア電圧 (1.5V)
│ │ 100nF [ RV32EC デジタルロジックコア ]
└─┬─┘ (パスコン)
│
GND ─────────────────────────────────────────
基板設計において、この100nFのキャパシタは、マイコンのデジタル回路が高速にON/OFFスイッチングを行う際に発生する急激な電流要求(スパイクノイズ)を一時的に供給する「ダム」の役割を果たします。これがない場合、電源ラインのインダクタンス成分によってVDD電圧が瞬間的に低下し、マイコンがリセット(ブラウンアウト)するか、論理反転ミス(バグ)を引き起こします。
1.3 単線SWIOによる革新的デバッグシステム
もう一つの簡素化の恩恵が、デバッグおよびプログラム書き込みインタフェースです。通常、JTAG規格では4〜5本、ARM系のSWD(Serial Wire Debug)でも最低2本(SWDIO / SWCLK)の信号線をマイコンに接続する必要がありました。ピン数の少ないTSSOP-20やQFN-20パッケージにおいて、デバッグに多くのピンを占有されるのは大きな損失です。
WCHは、これをわずか1本の信号線だけで同期双方向通信を行う「単線SWIO(Serial Wire Interface Output)」プロトコルとして実装しました。これにより、開発時に基板から引き出すべきラインは、「VDD」「GND」「SWIO」のわずか3本(電源を除けば信号線1本)となり、コネクタの専有面積を極限まで小さくすることができます。
CH32V003の単線SWIOプロトコルはWCHの独自仕様であるため、一般的なARM用デバッガ(J-LinkやST-Link、CMSIS-DAPなど)はそのまま流用できません。必ず専用デバッガである「WCH-LinkE」(秋月電子や公式ストアなどで入手可能)を使用してください。よくある失敗は、末尾に「E」が付かない無印の「WCH-Link」を買ってしまうことです。無印はCH32V003に対応していません。購入時は型番末尾の「E」を必ず確認してください。
次章からは、この「CH32V003マイコン」「パスコン」「LED」等の最少パーツのみを搭載し、ブレッドボードに直接挿せる「CH32V003 ProMicro互換ボード」を設計するための、KiCad 10環境構築へと駒を進めます。