
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)
| Merkmal | Kernaussage | Einordnung |
|---|---|---|
| CPU | QingKe RISC‑V2A, RV32EC, Machine Mode | klein, schnell genug, vendor-spezifisches Interrupt-/Debug-Ökosystem |
| Takt | SYSCLK bis 48 MHz, HSI 24 MHz, HSE 4…25 MHz, LSI 128 kHz | HSI startet standardmäßig, externer Quarz optional |
| Speicher | 16 KB Flash, 2 KB SRAM, 1920 B Bootloader, 64 B System-NVM, 64 B User-Memory | gut für kleine Firmware, knapp für Komfort-Stacks |
| Peripherie | DMA, ADC, OPA/CMP, TIM1, TIM2, SysTick, IWDG, WWDG, USART, I2C, SPI | für die Größe überraschend komplett |
| Versorgung | 2,7…5,5 V; ADC empfohlen ab 2,8 V | 5‑V-taugliche Anwendungen gut machbar |
| Low Power | Sleep typ. ~30 µs Wake; Standby typ. 7,6…9,4 µA; Wake typ. ~200 µs | brauchbar für duty-cycled Geräte |
| Bauformen | TSSOP20, QFN20, SOP16, SOP8 | Vollausbau 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)
| Bereich | Interne Seiten | Inhalt |
|---|---|---|
| Vorspann | PDF S. 1–2, ohne interne Seitenzahl | Overview, Feature-Liste, Modellmatrix |
| Specification | S. 1–9 | Systemarchitektur, Memory Map, Clock Tree, Funktionsblöcke |
| Pinouts and Pin Definition | S. 10–13 | Package-Pinouts, Pin-Definitionen, Alternate/Remap |
| Electrical Characteristics | S. 14–29 | Grenzwerte, Betrieb, Ströme, Oszillatoren, I/O, I2C, SPI, ADC, OPA |
| Package and Ordering Information | S. 30–35 | Gehä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
| Modell | Gehäuse | Ausbau |
|---|---|---|
| CH32V003F4P6 | TSSOP20 | Vollausbau: 18 GPIO, 8 ADC, SPI + I2C + USART |
| CH32V003F4U6 | QFN20 | Vollausbau wie F4P6, nur anderes Gehäuse |
| CH32V003A4M6 | SOP16 | reduziert: 14 GPIO, 6 ADC, I2C + USART, kein SPI laut Modellmatrix |
| CH32V003J4M6 | SOP8 | stark 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
| Thema | Wert | Praktische Bedeutung |
|---|---|---|
| Betriebsspannung | 2,7…5,5 V | breit, gut für 3,3‑V- und 5‑V-Designs |
| ADC-Betrieb | empfohlen ab 2,8 V; Funktionsbeschreibung warnt vor Qualitätsverlust unter 2,9 V | Analogteil nicht ganz so entspannt wie der Rest |
| Temperatur | −40…+85 °C Betrieb | Industrietauglichkeit |
| SYSCLK | 48 MHz | sinnvoller Auslegungspunkt |
| FHCLK/AHB | 50 MHz max in Operating Conditions | leicht höher als Marketingwert, aber 48 MHz bleibt die sichere Zielgröße |
| HSI | 24 MHz, kalibriert; Genauigkeit ca. −1,2/+1,6 % bei 0…70 °C, ±2,2 % bei −40…85 °C | für viel UART okay, Quarz für strenge Timing-Fälle besser |
| LSI | 128 kHz typisch, 1,5 µA typisch | ideal für IWDG/Standby |
| Wakeup | Sleep ~30 µs, Standby ~200 µs | brauchbar für zyklische Aktivierung |
| Run @ 48 MHz, 3,3 V | 6,4 mA (HSI, Periph an), 4,0 mA (HSI, Periph aus); 7,4 mA/5,2 mA mit ext. Takt | realistische Größenordnung im mA-Bereich |
| Run @ 48 MHz, 5 V | 7,4 mA/5,1 mA (HSI), 9,0 mA/6,8 mA (ext. Takt) | 5 V kostet spürbar Strom |
| Standby | 7,6…9,4 µA | sehr ordentlich für einfache Batteriegeräte |
| Flash-Endurance | 10k min, 80k typisch gemessen | 80k nicht garantiert |
| Data Retention | 10 Jahre | fü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
| Block | Werte | Bedeutung für die Praxis |
|---|---|---|
| VREFINT | 1,17…1,23 V, typ. 1,20 V | gut für interne Referenz- und VDD-Messung |
| ADC | 10 bit, 0…VDD, 8 ext + 2 int, 370 µA | für kleine Messaufgaben völlig brauchbar |
| ADC-Takt | 1…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 V | bei 3,3 V ist 12 MHz der praxisnahe obere Bereich |
| ADC-Konversion | 1,17 µs bei 12 MHz; 3,5 µs bei 4 MHz | hohe Sample-Raten möglich |
| ADC-Quellimpedanz | bei 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 |
| OPA | 2,8…5,5 V, 273 µA, Offset typ. ±3 mV, GBW 12 MHz, Slew 7,7 V/µs | für Vorverstärkung, Schwellwerterkennung, Strommessung sehr brauchbar |
| GPIO | Pull-up/down typ. 45 kΩ, Kapazität 5 pF, Schmitt-Hysterese 150 mV | normale Embedded-I/O |
| I/O-Drive | ±8 mA sinnvoll; ±20 mA nur nicht-streng an VOL/VOH | LED/Lasten nicht blind direkt treiben |
| Output-Speed | 2 / 10 / 30 MHz | für EMI und Flanken relevant |
| I2C | Standard/Fast, Buslast 400 pF | klassischer Sensor-/Peripheriebus |
| SPI | bis 24 MHz | vö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
| Pin | Typ | Hauptfunktion nach Reset | Bemerkungen |
|---|---|---|---|
| VDD | P | Versorgung | 2,7…5,5 V; ein 100‑nF-Abblockkondensator ist als Standardbeschaltung gezeigt |
| VSS | P | Masse | auf 20‑Pin-Varianten mehrfach vorhanden |
| PD1 | I/O/A | GPIO | SWIO für 1‑wire-SDI, außerdem AETR2 / TIM1_CH3N / SCL / URX remap; für Debug extrem wichtig |
| PD7 | I/O/A | GPIO | NRST, 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
| Pin | Typ | Haupt-/Standardfunktion | Wichtige Alternativen / Hinweise |
|---|---|---|---|
| PA1 | I/O/A | GPIO | OSCI, ADC_IN1, TIM1_CH2, OPN0 |
| PA2 | I/O/A | GPIO | OSCO, 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
| Pin | Typ | Haupt-/Standardfunktion | Wichtige Alternativen / Hinweise |
|---|---|---|---|
| PC0 | I/O | GPIO | TIM2_CH3, SPI_NSS-Remap, USART_TX-Remap, TIM1_CH3-Remap |
| PC1 | I/O/FT | GPIO | I2C_SDA, SPI_NSS, TIM1_BKIN, TIM2_CH4/TIM2_ETR, USART_RX-Remap |
| PC2 | I/O/FT | GPIO | I2C_SCL, USART_RTS, TIM1_BKIN/TIM1_ETR, AETR/TIM2_CH2-Remaps |
| PC3 | I/O | GPIO | TIM1_CH3 / TIM1_CH1N, USART_CTS-Remap |
| PC4 | I/O/A | GPIO | TIM1_CH4, MCO, ADC_IN2, weitere TIM1-Remaps |
| PC5 | I/O/FT | GPIO | SPI_SCK, TIM1_ETR, TIM2_ETR, I2C_SCL-Remaps, USART_CK-Remap |
| PC6 | I/O/FT | GPIO | SPI_MOSI, TIM1_CH1/TIM1_CH3N, I2C_SDA-Remaps, USART_CTS-Remaps |
| PC7 | I/O | GPIO | SPI_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
| Pin | Typ | Haupt-/Standardfunktion | Wichtige Alternativen / Hinweise |
|---|---|---|---|
| PD0 | I/O/A | GPIO | TIM1_CH1N, OPN1, I2C_SDA-Remap, USART_TX-Remap |
| PD2 | I/O/A | GPIO | TIM1_CH1, ADC_IN3, TIM2_CH3-Remap |
| PD3 | I/O/A | GPIO | ADC_IN4, TIM2_CH2, AETR, USART_CTS, TIM1_CH4-Remap |
| PD4 | I/O/A | GPIO | ADC_IN7, USART_CK, TIM2_CH1/ETR, OPA_OUT, TIM1_ETR/TIM1_CH4-Remap |
| PD5 | I/O/A | GPIO | ADC_IN5, USART_TX, TIM2_CH4 / USART_RX-Remap |
| PD6 | I/O/A | GPIO | ADC_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äuse | Größe | Pitch | Modell |
|---|---|---|---|
| TSSOP20 | 4,4 × 6,5 mm | 0,65 mm | CH32V003F4P6 |
| QFN20 | 3,0 × 3,0 mm | 0,4 mm | CH32V003F4U6 |
| SOP16 | 3,9 × 10,0 mm | 1,27 mm | CH32V003A4M6 |
| SOP8 | 3,9 × 5,0 mm | 1,27 mm | CH32V003J4M6 |
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.
