CH32V003 im Detail – Winziger RISC‑V Controller mit großem Potenzial

CH32V003 im Detail

Der CH32V003 ist einer dieser Mikrocontroller, bei denen man zweimal hinschaut: winzig, günstig, RISC‑V — und trotzdem mit erstaunlich viel Peripherie an Bord. In diesem Beitrag geht es nicht um Marketing-Geklingel, sondern um die praktische Frage: Was kann der Chip wirklich, wo glänzt er, und wo fängt das Tüfteln an?

Kurzfassung

Der CH32V003 ist ein sehr kleiner, industrietauglicher RISC‑V-Mikrocontroller mit erstaunlich kompletter Peripherie für seine Klasse: QingKe RISC‑V2A / RV32EC, bis 48 MHz, 16 KB Code-Flash, 2 KB SRAM, 1920 B Bootloader, 10‑bit-ADC, OPA/Komparator, DMA, TIM1 + TIM2, USART, I2C, SPI, 96‑Bit Unique ID und 1‑wire-SDI-Debug. Die Versorgung ist breit ausgelegt (2,7…5,5 V im Betriebskapitel; im Vorspann als 3,3 V/5 V beworben), der Temperaturbereich liegt bei −40…+85 °C. Die Serie gibt es in TSSOP20, QFN20, SOP16 und SOP8; die 20‑Pin-Typen sind der Vollausbau, die kleineren Gehäuse verlieren vor allem Pins und teils Schnittstellen. (Vorspann, Kap. 1, Kap. 3, Kap. 4)

Analytisch ist der Chip spannend, weil er mehr ist als ein simpler Billig-MCU, aber trotzdem streng ressourcenbegrenzt bleibt. Seine Stärke sind kleine, robuste Embedded-Aufgaben: Sensorik, PWM, kleine Motor-/Leistungsstufen, serielle Bridges, einfache Industrie- oder Haushaltssteuerungen. Seine Grenze ist nicht primär die Peripherie, sondern der sehr kleine Speicher und ein sichtbar aus mehreren Revisionen zusammengesetztes Datenblatt, das an einigen Stellen widersprüchlich ist. Für bare metal, schlanke C‑Firmware und sauberes Pin-/Takt-Design ist er sehr attraktiv; für große Frameworks oder „einfach mal dicke Abstraktionsschicht drüber“ eher nicht. (Vorspann; Kap. 1–4)

MerkmalKernaussageEinordnung
CPUQingKe RISC‑V2A, RV32EC, Machine Modeklein, schnell genug, vendor-spezifisches Interrupt-/Debug-Ökosystem
TaktSYSCLK bis 48 MHz, HSI 24 MHz, HSE 4…25 MHz, LSI 128 kHzHSI startet standardmäßig, externer Quarz optional
Speicher16 KB Flash, 2 KB SRAM, 1920 B Bootloader, 64 B System-NVM, 64 B User-Memorygut für kleine Firmware, knapp für Komfort-Stacks
PeripherieDMA, ADC, OPA/CMP, TIM1, TIM2, SysTick, IWDG, WWDG, USART, I2C, SPIfür die Größe überraschend komplett
Versorgung2,7…5,5 V; ADC empfohlen ab 2,8 V5‑V-taugliche Anwendungen gut machbar
Low PowerSleep typ. ~30 µs Wake; Standby typ. 7,6…9,4 µA; Wake typ. ~200 µsbrauchbar für duty-cycled Geräte
BauformenTSSOP20, QFN20, SOP16, SOP8Vollausbau nur bei 20 Pins

Die Grunddaten stammen aus Overview, Modellmatrix sowie den Kapiteln zu Betrieb und Gehäusen.

Typische Einsatzgebiete sind aus technischer Sicht vor allem:

  • kleine Sensor- oder Messknoten mit ADC und optionalem OPA-Vorverstärker,
  • PWM-/Motor-nahe Steuerungen mit TIM1 (komplementäre Ausgänge, Deadtime, Brake),
  • 3,3‑V/5‑V-Interface- oder Brückengeräte über USART/I2C/SPI,
  • platzkritische Industrie- oder Konsumersteuerungen, bei denen Kosten, Baugröße und einfache Robustheit wichtiger sind als Komfort-Software.
    Diese Eignung ergibt sich direkt aus Funktionsumfang, Stromdaten, Versorgung und Gehäusevarianten.

Aufbau des Datenblatts

Ein wichtiger Befund vorweg: Das PDF ist inhaltlich brauchbar, aber redaktionell nicht ganz sauber konsolidiert. Kapitel 1/2 tragen V1.8, die Alternate-Function-Seite trägt V1.4, das elektrische Kapitel V1.7, das Package-Kapitel wieder V1.8. Das ist kein Drama, aber ein klarer Hinweis darauf, dass das Dokument aus mehreren Revisonsständen zusammengesetzt wurde. Für kritische Entscheidungen sollte man also nicht blind nur eine einzelne Tabelle glauben, sondern Abschnitte gegeneinander prüfen. (Fußzeilen und Kapitelstruktur über das ganze Dokument)

BereichInterne SeitenInhalt
VorspannPDF S. 1–2, ohne interne SeitenzahlOverview, Feature-Liste, Modellmatrix
SpecificationS. 1–9Systemarchitektur, Memory Map, Clock Tree, Funktionsblöcke
Pinouts and Pin DefinitionS. 10–13Package-Pinouts, Pin-Definitionen, Alternate/Remap
Electrical CharacteristicsS. 14–29Grenzwerte, Betrieb, Ströme, Oszillatoren, I/O, I2C, SPI, ADC, OPA
Package and Ordering InformationS. 30–35Gehäusemaße, Modelle, Namensschema

Diese Gliederung ist direkt aus dem Dokument ablesbar.

Kapitel 3 ist der eigentliche technische Kern und verteilt sich intern so:

  • S. 14–15: Testbedingungen, Absolute Maximum Ratings, Operating Conditions, Reset/PVD/POR/PDR
  • S. 16–18: VREFINT, Stromaufnahme in Run/Sleep/Standby, externe Taktquelle
  • S. 20: interne Oszillatoren, Wakeup-Zeiten, Flash-Endurance/Retention
  • S. 21–22: I/O-DC- und AC-Werte, NRST
  • S. 23: Timer- und I2C-Charakteristik
  • S. 24–26: SPI-Timings
  • S. 26–28: ADC
  • S. 28–29: OPA
    Wer das Dokument praktisch nutzt, landet fast immer in Kapitel 1, Kapitel 2 und Kapitel 3.

Architektur und Funktionsblöcke

CPU, Interrupts und Busarchitektur

Der CH32V003 basiert auf einem QingKe V2A-Design mit RV32EC-Instruction-Set. Das Datenblatt nennt Machine Mode, PFIC (Fast Programmable Interrupt Controller), 2‑stufige Interrupt-Nesting-Unterstützung, 2‑Level-Hardware-Interrupt-Stack, 1‑wire-SDI und Custom Extended Commands. Das ist wichtig: Der Core ist zwar RISC‑V, aber nicht „nackt standardisiert“ wie ein ganz generischer Softcore. Vor allem PFIC und das 1‑wire-Debug sind stark vendor-spezifisch und haben direkte Konsequenzen für Toolchain, Debugger und Low-Level-Portierung. (Kap. 1.1 / 1.4.1, S. 1 und 5)

Architektonisch hängt der Kern an einer klassischen Mikrocontroller-Struktur mit Flash, SRAM, DMA, AHB/Systembus, Reset-/Clock-Mux und den Peripherieblöcken. Der Blockplan zeigt TIM1, TIM2, USART, SPI, I2C, GPIOA/C/D, ADC, OPA/CMP, IWDG, WWDG, EXTI, PWR und AFIO. Auffällig ist, dass der Chip trotz Mini-Flash bereits DMA und einen Advanced Timer mit komplementären Ausgängen mitbringt – also klar mehr als „blinkende GPIO mit UART“. (Blockdiagramm und Funktionsbeschreibung, S. 1 sowie S. 5–9)

Speicher, Boot und Adressraum

Die Speicherausstattung ist klein, aber sauber strukturiert:

  • 16 KB Code Flash
  • 2 KB SRAM
  • 1920 B System Flash / Bootloader
  • 64 B System-Konfigurationsspeicher
  • 64 B User-definierter nichtflüchtiger Speicher
    Außerdem unterstützt der Chip laut Datenblatt gegenseitige Sprünge zwischen Boot und User Code, was für Update- oder Recovery-Strategien nützlich ist. (Overview und Kap. 1.4.2, S. 1 und 5)

Die Memory Map ist klassisch und für Firmware-Entwickler gut lesbar:

0x0000_0000   Alias auf Flash oder System Memory
0x0800_0000   Code Flash (16 KB)
0x2000_0000   SRAM (2 KB)
0x1FFF_F780   Vendor-/Option-/Systembereich
0x4000_0000   Peripheriebereich
0xE000_0000   Core-private Peripherie

Wichtig ist vor allem der Alias bei 0x0000_0000: Er passt zur Bootloader-Idee und beeinflusst Startup, Boot-Flow und Recovery-Pfade. Für dieses Bauteil sollte man Boot-Logik bewusst designen, statt sie als Nebenkriegsschauplatz zu behandeln. (Kap. 1.2 und 1.4.2, S. 2 und 5)

Peripherie im Überblick

Die Peripherie ist der eigentliche „Wow, für so ein kleines Ding?“-Teil des Chips. Der ADC ist 10‑bit, unterstützt acht externe plus zwei interne Kanäle, mehrere Betriebsarten, Analog Watchdog, DMA und sogar eine externe Trigger-Verzögerung. Dazu kommt ein OPA/Komparator, der mit ADC und TIM2 CH1 verknüpft werden kann – ein sehr nützliches Detail für kleine analoge Frontends, Strommessung, Schwellwertdetektion oder Sensorvorverstärkung. (Kap. 1.4.11 und 1.4.17, S. 7 und 9)

Bei den Timern ist TIM1 der Star: 16‑bit Advanced Timer, komplementäre PWM-Ausgänge, Dead-Zone/Deadtime, Emergency Brake und Motorsteuerungs-Fokus. TIM2 ist der allgemeine Arbeitstimer mit Capture/Compare/PWM, Zähler- und Encoder-Bezug, DMA-Requests und Signalverarbeitung bis hin zu Hall-Sensor-Eingängen. Zusätzlich gibt es IWDG, WWDG und SysTick. Das macht den Chip für kleine Netzteile, Halbbrücken, Lüfter, Pumpen, Ventile oder Led-/Motor-PWM deutlich interessanter, als es der Flash-Wert allein vermuten lässt. (Kap. 1.4.12, S. 7–8)

Kommunikationsseitig ist der einzelne USART sehr voll ausgestattet: asynchron/synchron, half-duplex single-wire, LIN, ISO7816 Smartcard, IrDA SIR, CTS/RTS, Multi-Processor-Kommunikation und DMA. SPI kann Master/Slave, 8/16‑bit, CRC, SD/MMC-Basisbetrieb und DMA. I2C unterstützt Standard/Fast Mode, 7/10‑Bit-Adressen, Dual-Address und Hardware-CRC. In der Praxis ist damit fast immer der Pinmux die Grenze, nicht der Peripherieblock selbst. (Kap. 1.4.13–1.4.15, S. 8)

Modellvarianten

ModellGehäuseAusbau
CH32V003F4P6TSSOP20Vollausbau: 18 GPIO, 8 ADC, SPI + I2C + USART
CH32V003F4U6QFN20Vollausbau wie F4P6, nur anderes Gehäuse
CH32V003A4M6SOP16reduziert: 14 GPIO, 6 ADC, I2C + USART, kein SPI laut Modellmatrix
CH32V003J4M6SOP8stark reduziert: 6 GPIO, 6 ADC, sehr pinsparsame Minimalvariante

Die 20‑Pin-Typen sind klar die sinnvollsten Allrounder. Die kleinen Gehäuse sind eher Derivate für maximale Kosten-/Platzoptimierung – nicht einfach „gleicher Chip in kleiner“. (Modellmatrix im Vorspann, Package-Kapitel)

flowchart LR
  subgraph Core["Rechenkern"]
    CPU["QingKe RISC-V2A<br/>RV32EC"]
    PFIC["PFIC<br/>2-stufiges Nesting"]
    SDI["1-wire SDI<br/>SWIO"]
  end

  FLASH["Code Flash<br/>16 KB"]
  SRAM["SRAM<br/>2 KB"]
  DMA["DMA"]
  CLK["HSI / HSE / LSI<br/>Reset, Mux, Divider"]
  TIM1["TIM1<br/>Advanced PWM"]
  TIM2["TIM2<br/>General Timer"]
  ADC["10-bit ADC"]
  OPA["OPA / Comparator"]
  COM["USART / I2C / SPI"]
  GPIO["GPIOA / GPIOC / GPIOD"]
  WDG["IWDG / WWDG"]
  SYS["PWR / EXTI / AFIO"]

  CPU --- FLASH
  CPU --- SRAM
  CPU --- DMA
  CPU --- CLK
  CPU --- TIM1
  CPU --- TIM2
  CPU --- ADC
  CPU --- COM
  CPU --- GPIO
  CPU --- WDG
  CPU --- SYS
  ADC --- OPA
  TIM2 --- OPA

Das Diagramm ist eine vereinfachte Text-Nachbildung der Originalfiguren 1‑1 und 1‑4. (Kap. 1, S. 1–9)

Takt, Energie und elektrische Kennwerte

Clocking, Reset und Brownout-Verhalten

Der Chip startet standardmäßig mit dem internen 24‑MHz-HSI, und erst danach kann auf externen Takt (4…25 MHz) oder die interne ×2-PLLCLK/SYSCLK-Struktur umgeschaltet werden. Das Clock Tree-Diagramm zeigt AHB-Prescaler, ADCPRE, MCO, SysTick(/8), Flash-Zeitbasis(/3) und WWDG(/4096). Zusätzlich wird ein Clock Security System erwähnt: Wenn HSE als Systemclock verwendet wird und ausfällt, schaltet der Chip automatisch auf den internen RC um und deaktiviert HSE/PLL; nach Wakeup aus Low Power wird ebenfalls automatisch auf den internen RC zurückgegangen. (Kap. 1.3, Kap. 1.4.10, S. 3–7)

Die Spannungsüberwachung ist für die Klasse ordentlich: POR/PDR arbeiten integriert, PVD ist softwareaktivierbar und bietet mehrere Schwellen. Die auswählbaren PVD-Stufen reichen ungefähr von 2,7/2,85 V bis 4,2/4,4 V, je nach Rising/Falling-Edge-Betrachtung; die Hysterese liegt bei 0,18 V. Die typischen POR/PDR-Schwellen liegen bei etwa 2,5 V steigend und 2,48 V fallend. Für 3,3‑V-Designs ist das praktisch: Man kann Brownout-/Warnlogik softwareseitig sinnvoll staffeln. (Kap. 1.4.4 und Kap. 3.3.2, S. 5 sowie S. 15–16)

flowchart TD
  HSI["HSI RC 24 MHz"] --> SW["SYSCLK-Auswahl"]
  HSE["HSE 4-25 MHz"] --> SW
  HSI --> PLL["x2 / PLLCLK"]
  HSE --> PLL
  PLL --> SW

  SW --> SYS["SYSCLK bis 48 MHz"]
  SW --> CSS["Clock Security Switch"]

  SYS --> AHB["AHB-Prescaler /1 ... /256"]
  AHB --> HCLK["HCLK"]
  HCLK --> CORE["CPU / SRAM / DMA / AHB-Peripherie"]
  HCLK --> TIM1["TIM1"]
  HCLK --> TIM2["TIM2"]
  HCLK --> ADCPRE["ADCPRE /2 ... /128"]
  ADCPRE --> ADC["ADC"]
  HCLK --> WWDG["WWDG /4096"]
  HCLK --> SYST["SysTick /8"]
  HCLK --> FLASH["Flash-Zeitbasis /3"]
  HCLK --> MCO["MCO"]

  LSI["LSI RC 128 kHz"] --> IWDG["IWDG"]
  LSI --> PWR["PWR / Low-Power-Clock"]

Vereinfachte Nachbildung der Clock-Tree-Figur aus dem Datenblatt. (Kap. 1.3, S. 3–4)

Low Power

Der CH32V003 kennt laut Datenblatt zwei Low-Power-Modi: Sleep und Standby.
In Sleep läuft die Peripherie weiter, nur der CPU-Takt stoppt; das ist der flache, schnelle Modus.
In Standby wird die Kernversorgung abgeschaltet, HSI und HSE gehen aus, und der Strom sinkt auf einstellige Mikroampere. Wakeup aus Sleep erfolgt per Interrupt/Event, Wakeup aus Standby per EXTI, NRST, IWDG oder AWU. Typische Wake-Zeiten sind ~30 µs aus Sleep und ~200 µs aus Standby. (Kap. 1.4.6 und Kap. 3.3.7, S. 6 sowie S. 20)

timeline
  title Energiezustände des CH32V003
  Run : CPU + Peripherie aktiv
  Sleep : Nur CPU-Takt aus
        : Peripherietakte bleiben aktiv
  Wake aus Sleep : Interrupt oder Wake-Event
                  : typisch ~30 us
  Standby : Kernversorgung aus
          : HSI/HSE aus
          : minimaler Verbrauch
  Wake aus Standby : EXTI / NRST / IWDG / AWU
                    : typisch ~200 us

Die zeitliche Einordnung ist direkt aus den Low-Power- und Wakeup-Abschnitten verdichtet.

Schlüsselwerte für Betrieb und Stromaufnahme

ThemaWertPraktische Bedeutung
Betriebsspannung2,7…5,5 Vbreit, gut für 3,3‑V- und 5‑V-Designs
ADC-Betriebempfohlen ab 2,8 V; Funktionsbeschreibung warnt vor Qualitätsverlust unter 2,9 VAnalogteil nicht ganz so entspannt wie der Rest
Temperatur−40…+85 °C BetriebIndustrietauglichkeit
SYSCLK48 MHzsinnvoller Auslegungspunkt
FHCLK/AHB50 MHz max in Operating Conditionsleicht höher als Marketingwert, aber 48 MHz bleibt die sichere Zielgröße
HSI24 MHz, kalibriert; Genauigkeit ca. −1,2/+1,6 % bei 0…70 °C, ±2,2 % bei −40…85 °Cfür viel UART okay, Quarz für strenge Timing-Fälle besser
LSI128 kHz typisch, 1,5 µA typischideal für IWDG/Standby
WakeupSleep ~30 µs, Standby ~200 µsbrauchbar für zyklische Aktivierung
Run @ 48 MHz, 3,3 V6,4 mA (HSI, Periph an), 4,0 mA (HSI, Periph aus); 7,4 mA/5,2 mA mit ext. Taktrealistische Größenordnung im mA-Bereich
Run @ 48 MHz, 5 V7,4 mA/5,1 mA (HSI), 9,0 mA/6,8 mA (ext. Takt)5 V kostet spürbar Strom
Standby7,6…9,4 µAsehr ordentlich für einfache Batteriegeräte
Flash-Endurance10k min, 80k typisch gemessen80k nicht garantiert
Data Retention10 Jahrefür Kalibrierung/Konfiguration brauchbar

Kondensiert aus Kap. 3.1 bis 3.3.8. Die Run-/Sleep-/Standby-Zahlen sind ausdrücklich gemessen, nicht bloß simuliert.

Analog- und I/O-Schlüsselwerte

BlockWerteBedeutung für die Praxis
VREFINT1,17…1,23 V, typ. 1,20 Vgut für interne Referenz- und VDD-Messung
ADC10 bit, 0…VDD, 8 ext + 2 int, 370 µAfür kleine Messaufgaben völlig brauchbar
ADC-Takt1…6 MHz bei 2,8…5,5 V; 1…12 MHz bei 3,2…5,5 V; 1…24 MHz bei 4,5…5,5 Vbei 3,3 V ist 12 MHz der praxisnahe obere Bereich
ADC-Konversion1,17 µs bei 12 MHz; 3,5 µs bei 4 MHzhohe Sample-Raten möglich
ADC-Quellimpedanzbei 12 MHz: ca. 8,5 kΩ (0,25 µs), 28,5 kΩ (0,75 µs), 98,5 kΩ (2,5 µs)hochohmige Sensoren brauchen längere Samplezeit oder Buffer
OPA2,8…5,5 V, 273 µA, Offset typ. ±3 mV, GBW 12 MHz, Slew 7,7 V/µsfür Vorverstärkung, Schwellwerterkennung, Strommessung sehr brauchbar
GPIOPull-up/down typ. 45 kΩ, Kapazität 5 pF, Schmitt-Hysterese 150 mVnormale Embedded-I/O
I/O-Drive±8 mA sinnvoll; ±20 mA nur nicht-streng an VOL/VOHLED/Lasten nicht blind direkt treiben
Output-Speed2 / 10 / 30 MHzfür EMI und Flanken relevant
I2CStandard/Fast, Buslast 400 pFklassischer Sensor-/Peripheriebus
SPIbis 24 MHzvöllig ausreichend für kleine Speicher/Displays/Sensoren

Die ADC- und OPA-Daten sind für diese Chipklasse besonders relevant, weil sie in der Praxis oft darüber entscheiden, ob man externe Analog-Hardware sparen kann. (Kap. 3.3.3 bis 3.3.15)

Pinout und Gehäusevarianten

Die Pin-Tabellen im Datenblatt sind ausdrücklich funktionsgenerisch und nicht automatisch modellbezogen. Das ist wichtig: Die Alternate-Function-Tabelle listet, was die Signal-Matrix grundsätzlich kann; die Modellmatrix sagt erst, welche Ressourcen im konkreten Gehäuse wirklich vorhanden sind. In anderen Worten: Für diesen Chip reichen Pin-Tabelle oder Modell-Tabelle allein nicht. Man muss beides zusammen lesen. (Kap. 2.2 und 2.3, S. 11–13)

Im Folgenden steht der logische Vollausbau der 20‑Pin-Varianten (F4P6/F4U6) im Vordergrund. Die kleineren Pakete sind Teilmengen davon.

Versorgung, Reset und Debug

PinTypHauptfunktion nach ResetBemerkungen
VDDPVersorgung2,7…5,5 V; ein 100‑nF-Abblockkondensator ist als Standardbeschaltung gezeigt
VSSPMasseauf 20‑Pin-Varianten mehrfach vorhanden
PD1I/O/AGPIOSWIO für 1‑wire-SDI, außerdem AETR2 / TIM1_CH3N / SCL / URX remap; für Debug extrem wichtig
PD7I/O/AGPIONRST, außerdem TIM2_CH4 / OPP1 / UCK-Remaps; Reset- und Multifunktionskonflikt beachten

Diese vier Punkte sind für Board-Layout und Inbetriebnahme die wichtigsten Sonderpins. (Kap. 2.2, 3.1, 3.3.10)

Port A

PinTypHaupt-/StandardfunktionWichtige Alternativen / Hinweise
PA1I/O/AGPIOOSCI, ADC_IN1, TIM1_CH2, OPN0
PA2I/O/AGPIOOSCO, ADC_IN0, TIM1_CH2N, OPP0, AETR2-Remap

Wichtige Praxisfolge: Wer einen externen Quarz nutzt, opfert mit PA1/PA2 zugleich zwei Analog-/GPIO-/Timerpins. (Kap. 2.2, 2.3 und Clock-Kapitel)

Port C

PinTypHaupt-/StandardfunktionWichtige Alternativen / Hinweise
PC0I/OGPIOTIM2_CH3, SPI_NSS-Remap, USART_TX-Remap, TIM1_CH3-Remap
PC1I/O/FTGPIOI2C_SDA, SPI_NSS, TIM1_BKIN, TIM2_CH4/TIM2_ETR, USART_RX-Remap
PC2I/O/FTGPIOI2C_SCL, USART_RTS, TIM1_BKIN/TIM1_ETR, AETR/TIM2_CH2-Remaps
PC3I/OGPIOTIM1_CH3 / TIM1_CH1N, USART_CTS-Remap
PC4I/O/AGPIOTIM1_CH4, MCO, ADC_IN2, weitere TIM1-Remaps
PC5I/O/FTGPIOSPI_SCK, TIM1_ETR, TIM2_ETR, I2C_SCL-Remaps, USART_CK-Remap
PC6I/O/FTGPIOSPI_MOSI, TIM1_CH1/TIM1_CH3N, I2C_SDA-Remaps, USART_CTS-Remaps
PC7I/OGPIOSPI_MISO, TIM1_CH2, TIM2_CH2, USART_RTS-Remaps

Die FT-Pins sind PC1, PC2, PC5 und PC6. Wenn das System auf 3,3 V läuft, aber 5‑V-Signale hereinkommen, sind genau diese Pins die bevorzugten Kandidaten. (Kap. 2.2, 2.3 und Kap. 3.3.9)

Port D

PinTypHaupt-/StandardfunktionWichtige Alternativen / Hinweise
PD0I/O/AGPIOTIM1_CH1N, OPN1, I2C_SDA-Remap, USART_TX-Remap
PD2I/O/AGPIOTIM1_CH1, ADC_IN3, TIM2_CH3-Remap
PD3I/O/AGPIOADC_IN4, TIM2_CH2, AETR, USART_CTS, TIM1_CH4-Remap
PD4I/O/AGPIOADC_IN7, USART_CK, TIM2_CH1/ETR, OPA_OUT, TIM1_ETR/TIM1_CH4-Remap
PD5I/O/AGPIOADC_IN5, USART_TX, TIM2_CH4 / USART_RX-Remap
PD6I/O/AGPIOADC_IN6, USART_RX, TIM2_CH3 / USART_TX-Remap

Gerade PD4/PD5/PD6 sind extrem überladen. Wenn dein Board gleichzeitig UART, Analogmessung und Timer will, landen diese Pins sehr schnell im Konfliktbereich. Genau hier entscheidet AFIO-Planung über „läuft sofort“ oder „warum fehlt mir genau ein Pin“. (Kap. 2.2, 2.3)

Gehäuse und Mechanik

GehäuseGrößePitchModell
TSSOP204,4 × 6,5 mm0,65 mmCH32V003F4P6
QFN203,0 × 3,0 mm0,4 mmCH32V003F4U6
SOP163,9 × 10,0 mm1,27 mmCH32V003A4M6
SOP83,9 × 5,0 mm1,27 mmCH32V003J4M6

Für Prototyping und Reparierbarkeit ist TSSOP20 meist die praktischste Wahl. QFN20 ist der gleiche Funktionsumfang auf minimaler Fläche. SOP16/SOP8 sind nur sinnvoll, wenn man die fehlenden Pins und den reduzierten Ausbau sehr bewusst eingeplant hat. (Kap. 4, S. 30–33)

Entwicklerperspektive

Typische Anwendungsszenarien

Aus dem Funktionsmix heraus sind vor allem diese Szenarien naheliegend:

  • Analoge Sensorknoten: ADC + OPA + DMA + kleine C‑Firmware sind ideal für einfache Messketten, Schwellwerte, Strom- oder Spannungserfassung.
  • Kleine Motor-/PWM-Steuerungen: TIM1 mit komplementären Ausgängen, Deadtime und Brake passt zu Halbbrücken, Lüftern, Ventilen, kleinen Pumpen oder LED-Leistungsstufen.
  • Serielle Adapter und Bridges: USART/I2C/SPI mit 3,3‑V/5‑V-Betrieb machen ihn nützlich als kleines Übersetzungs- oder Steuer-IC.
  • Low-Cost-Industrie-/Haushaltslogik: Watchdogs, Brownout-Überwachung, Temperaturbereich und 5‑V-Fähigkeit sprechen für robuste Kleinststeuerungen.
  • Platzsparende Einweg-/Serienprodukte: SOP8/SOP16 sind dort attraktiv, wo ein ATtiny-ähnlicher Formfaktor gesucht wird, aber RISC‑V und modernere Peripherie gewünscht sind.

Nicht optimal ist er für:

  • große Protokollstacks,
  • komplexe UI/Display-Firmware,
  • komfortable RTOS-Setups,
  • OTA-/Update-Logik mit viel Pufferbedarf,
  • Projekte, bei denen Debug-Komfort und Community-Support wichtiger sind als Stückkosten.

Die Grenze ist fast immer: 16 KB Flash und 2 KB RAM. Damit kann man sehr viel machen, aber eben nicht sorglos.

Toolchain- und Firmware-Folgen

Der CH32V003 ist formal RISC‑V, aber praktisch stark WCH-/QingKe-geprägt. Das bedeutet:

  • Debug über 1‑wire-SDI / SWIO, nicht klassisches JTAG/SWD wie bei vielen ARM-Boards.
  • Interrupts laufen über PFIC, nicht über ein generisches RISC‑V-PLIC/CLINT-Modell.
  • Die kleinen Speichergrößen erzwingen konsequente Linker-, Startup- und Library-Disziplin.
  • Vendor-Beispiele sind nützlich, aber man sollte verstehen, was sie im Takt-, AFIO- und Interrupt-System wirklich tun.

Für saubere Firmware empfiehlt sich ein sehr schlanker Aufbau:

  • keine überdimensionierte HAL-Schicht,
  • gezielte Register- oder Mini-Driver-Abstraktion,
  • statische Speicherplanung,
  • bewusste ISR-Laufzeiten,
  • frühe Kontrolle der Map-Datei.

Das klingt streng, ist aber nicht negativ. Es zwingt nur zu dem, was kleine Mikrocontroller ohnehin mögen: klare Architektur statt Komfort-Beton.

Pinmux-Risiken

Der Pinmux ist beim CH32V003 einer der wichtigsten Entwurfsbereiche. Die Peripherie ist reichhaltig, aber die Pins sind knapp. Besonders konfliktträchtig sind:

  • PD1: Debug/SWIO plus mehrere Alternativfunktionen.
  • PD7: Reset plus Timer/OPA/UART-Clock-Alternativen.
  • PA1/PA2: Quarzpins plus Analog/Timer.
  • PD4/PD5/PD6: ADC + UART + Timer + OPA-Umfeld.
  • PC1/PC2/PC5/PC6: wichtige FT-/I2C-/SPI-/Timer-Funktionen.

Die praktische Empfehlung lautet daher: Erst Pinplan, dann Schaltplan. Wer andersherum arbeitet, baut sich sehr leicht einen hübschen, aber schlecht flashbaren oder schlecht debugbaren Würfel.

Vergleichbare Denkrichtung

Vom Einsatzgefühl her konkurriert der CH32V003 weniger mit großen STM32- oder ESP32-Systemen, sondern eher mit:

  • kleinen 8‑Bit-MCUs,
  • ATtiny-artigen Steuerchips,
  • kleinen ARM Cortex‑M0/M0+-Controllern,
  • dedizierten Logik-/Timer-/ADC-Hilfscontrollern.

Sein Vorteil ist die Kombination aus Preis, RISC‑V-Kern, 5‑V-Toleranz im Systemdesign, Timer-Ausstattung und Analogblock. Sein Nachteil ist das noch speziellere Ökosystem und die Speicherknappheit.

Inkonsistenzen und Datenblatt-Fallen

Das Datenblatt ist nicht schlecht, aber man muss es technisch nüchtern lesen. Auffällige Punkte:

1. Unterschiedliche Dokumentversionen im selben PDF

Mehrere Kapitel tragen unterschiedliche Versionsstände. Das kann harmlos sein, bedeutet aber: Bei Grenzfällen sollten Werte gegengeprüft werden.

2. Betriebsspannung im Vorspann vs. Detailkapitel

Der Vorspann bewirbt 3,3 V/5 V, die detaillierten Operating Conditions nennen 2,7…5,5 V. Das ist kein echter Widerspruch, aber der Detailwert ist für Designgrenzen entscheidend.

3. ADC-Spannungsbereich

An einer Stelle wird sinngemäß gewarnt, dass ADC-Konvertierungsqualität unter 2,9 V sinkt; die elektrischen Tabellen erlauben ADC-Betrieb ab 2,8 V. Für gute Messqualität sollte man konservativ planen.

4. FHCLK 50 MHz vs. SYSCLK 48 MHz

Marketing und Featureliste sprechen von 48 MHz, Operating Conditions nennen FHCLK bis 50 MHz. Praktisch sollte 48 MHz als sauberer Zielwert verwendet werden.

5. Modellmatrix vs. Alternate-Function-Tabelle

Die Alternate-Function-Tabelle wirkt wie ein Vollausbau-Baukasten. Die Modellmatrix begrenzt aber, was in SOP16/SOP8 wirklich verfügbar ist. Das ist vermutlich die wichtigste praktische Falle.

Praktische Design-Empfehlungen

Board-Design

  • SWIO/PD1 immer zugänglich machen, idealerweise mit Testpad oder Header.
  • NRST/PD7 bewusst entscheiden: Reset behalten oder Pinfunktion nutzen – aber nicht aus Versehen verlieren.
  • 100 nF nahe an VDD/VSS setzen; bei längeren Leitungen zusätzliche Bulk-Kapazität vorsehen.
  • Quarz nur verwenden, wenn wirklich nötig, weil PA1/PA2 wertvolle Pins sind.
  • FT-Pins gezielt für externe 5‑V-Signale verwenden, aber nicht blind alle Pins als 5‑V-tolerant behandeln.

Firmware

  • HSI zuerst nutzen; externen Takt erst aktivieren und prüfen.
  • Map-Datei regelmäßig anschauen; 16 KB Flash sind schnell voll.
  • printf vermeiden oder minimalisieren; Formatfunktionen fressen Speicher.
  • DMA gezielt nutzen, aber nicht überdesignen.
  • Watchdog früh einplanen, gerade bei Standalone-Steuerungen.
  • Low-Power-Aufwachpfade testen, nicht nur aus dem Datenblatt übernehmen.

Analog

  • ADC-Eingänge nicht zu hochohmig treiben oder Samplezeit verlängern.
  • Bei 3,3 V ADC-Takt konservativ wählen.
  • OPA nur nutzen, wenn Offset und Bandbreite zur Messaufgabe passen.
  • VREFINT für Plausibilitätsmessung von VDD verwenden.

Produktion und Test

  • Testpunkte für Versorgung, Masse, SWIO, Reset und zentrale IOs setzen.
  • Boot-/Recovery-Pfad dokumentieren.
  • Option-/User-NVM nicht für häufige Logs missbrauchen.
  • Flash-Endurance konservativ mit 10k planen, nicht mit typischen 80k.

Bewertung

Stärken

Der eingebaute Operationsverstärker (OPA)

Eine Besonderheit des CH32V003 ist der integrierte Operationsverstärker (OPA).

Normalerweise benötigt man für solche Aufgaben einen zusätzlichen Baustein auf der Platine. Beim CH32V003 ist dieser Verstärker bereits im Mikrocontroller enthalten.

Wozu braucht man einen Operationsverstärker?

Viele Sensoren liefern nur sehr kleine Spannungen.

Beispiele:

  • Thermoelemente
  • Messbrücken
  • Strommess-Shunts
  • Lichtsensoren
  • Mikrofone

Diese Signale sind oft zu klein, um sie direkt präzise mit dem ADC auszuwerten.

Der Operationsverstärker kann solche Signale verstärken, bevor sie gemessen werden.

Praktisches Beispiel

Ein Shunt-Widerstand erzeugt bei 100 mA vielleicht nur wenige Millivolt.

Der ADC könnte diesen Wert nur grob erfassen.

Mit dem integrierten Operationsverstärker kann das Signal vorher verstärkt werden, sodass der ADC deutlich genauer messen kann.

Warum ist das interessant?

Normalerweise benötigt man:

  • Mikrocontroller
  • Operationsverstärker-IC
  • zusätzliche Bauteile

Beim CH32V003 steckt der Verstärker bereits im Chip.

Das spart:

  • Platz
  • Bauteile
  • Kosten
  • Stromverbrauch

Gerade bei kleinen Sensorprojekten ist das ein echter Vorteil.

Für Einsteiger wichtig

Man muss den Operationsverstärker nicht benutzen.

Der CH32V003 funktioniert auch ohne ihn ganz normal.

Wer später jedoch Messschaltungen oder Sensoren bauen möchte, erhält eine Funktion, die man in dieser Preisklasse nur selten findet.

weitere

  • sehr viel Peripherie für Größe und Klasse,
  • RISC‑V-Kern mit brauchbarer Taktleistung,
  • breite Versorgung bis 5,5 V,
  • gute Timer-Ausstattung inklusive Advanced PWM,
  • ADC + OPA/Komparator als nützlicher Analogblock,
  • DMA trotz sehr kleinem Speicher,
  • mehrere kleine Gehäusevarianten,
  • gute Eignung für günstige Serien- und Bastelhardware.

Schwächen

  • nur 16 KB Flash und 2 KB SRAM,
  • Debug-/Interrupt-Welt vendor-spezifisch,
  • Datenblatt redaktionell nicht perfekt konsolidiert,
  • Pinmux schnell eng,
  • kleinere Gehäuse nicht einfach Vollausbau in kleiner,
  • kein Komfortchip für große Frameworks.

Gesamturteil

Der CH32V003 ist ein sehr interessanter Mikrocontroller für alle, die kleine, konkrete Aufgaben lösen wollen und keine Angst vor Low-Level-Firmware haben. Er ist kein „Mini-ESP“ und kein Komfort-STM32-Ersatz. Er ist eher ein moderner, sehr günstiger, erstaunlich kompletter Arbeits-Controller für Sensorik, PWM, Interface-Logik und robuste Kleinststeuerungen.

Seine größte Stärke ist nicht irgendein einzelnes Feature, sondern die Mischung:

RISC‑V + 5‑V-nahe Nutzbarkeit + brauchbarer Analogteil + starke Timer + winziges Gehäuse.

Seine größte Schwäche ist genauso klar:

Speicher und Pinmux verzeihen keine Schlamperei.

Wer sauber plant, bekommt mit dem CH32V003 einen bemerkenswert fähigen Mikrocontroller. Wer „mal eben“ ein großes Framework draufkippen will, wird wahrscheinlich schneller fluchen als flashen.

Oder anders gesagt: Das Ding ist kein Schweizer Taschenmesser mit Touchscreen – eher ein sehr scharfes Skalpell für kleine Embedded-Aufgaben.

Was bedeuten die technischen Daten eigentlich?

Wer zum ersten Mal ein Datenblatt öffnet, sieht oft nur Zahlen und Abkürzungen. Dabei verraten diese Werte, was der Mikrocontroller später wirklich kann.

48 MHz Taktfrequenz

Der CH32V003 arbeitet mit bis zu 48 MHz. Vereinfacht gesagt ist das die Arbeitsgeschwindigkeit des Chips. Für typische Bastelprojekte wie Sensoren, Relais, LED-Steuerungen, Temperaturmessungen oder kleine Displays ist das mehr als ausreichend.

16 KB Flash-Speicher

Im Flash-Speicher wird das eigentliche Programm abgelegt. Dort bleibt es auch nach dem Ausschalten erhalten. Für viele Projekte reicht der Speicher problemlos aus. Selbst komplexere Programme mit Menüs, Sensoren und Kommunikation passen oft noch hinein.

2 KB Arbeitsspeicher (RAM)

Der RAM wird während des Betriebs genutzt. Hier liegen Variablen, Messwerte und Berechnungen. 2 KB klingt zunächst wenig, reicht aber für erstaunlich viele Aufgaben aus. Zum Vergleich: Viele klassische Arduino-Projekte benötigen deutlich weniger.

ADC – Der analoge Eingang

Der eingebaute ADC (Analog-Digital-Wandler) kann Spannungen messen. Damit lassen sich beispielsweise:

  • Temperatursensoren auslesen
  • Helligkeit messen
  • Potentiometer abfragen
  • Batteriespannungen überwachen

Der Chip macht aus einer Spannung einen Zahlenwert, den das Programm weiterverarbeiten kann.

PWM – Die elektronische Dimmfunktion

PWM steht für Pulsweitenmodulation. Damit kann der Controller beispielsweise:

  • LEDs dimmen
  • Servomotoren steuern
  • Lüfter regeln
  • Heizungen takten

Obwohl der Ausgang nur EIN oder AUS kennt, entsteht durch schnelles Schalten eine regelbare Leistung.

UART, SPI und I²C

Diese drei Begriffe stehen für Kommunikationsschnittstellen.

UART:
Wird oft für Programmierung, Debug-Ausgaben oder GPS-Module verwendet.

SPI:
Sehr schnelle Verbindung für Displays, Speicherbausteine oder Sensoren.

I²C:
Praktisch für viele Sensoren und Displays, weil mehrere Geräte über dieselben zwei Leitungen angeschlossen werden können.

DMA – Der heimliche Helfer

DMA ist eine kleine Hardware-Einheit im Chip, die Daten verschieben kann, ohne den Prozessor zu belasten.

Für Einsteiger ist DMA zunächst nicht wichtig. Wer später größere Projekte baut, kann damit jedoch erstaunlich viel Rechenzeit sparen.

Warum ist der CH32V003 so interessant?

Der Controller kostet oft weniger als viele einzelne Sensoren und bietet trotzdem Funktionen, die früher deutlich teureren Mikrocontrollern vorbehalten waren.

Für einfache Bastelprojekte ist er häufig leistungsfähiger als nötig – und genau das macht ihn so attraktiv.

Nach oben scrollen