The WCH CH32V as a Low-Cost STM32 Alternative
A small STM32 has long owned the low-cost end of the 32-bit market. The WCH CH32V sets out to take that end on price. It carries an entry STM32’s peripherals and clock speeds on a RISC-V core. Engineers who would have reached for an STM32F0, F1, or G0 now have it as an option. The saving comes from a licence-free core. The switch stays cheap because the peripherals read like the STM32 originals.
WCH and the cheap 32-bit play
WCH is a Chinese semiconductor company that built its name on interface silicon. Its USB-to-serial bridges, hubs, and Ethernet controllers sit on millions of boards and sell by the reel. The CH340 serial bridge alone ships in the hundreds of millions. The full company name is Nanjing Qinheng Microelectronics, founded in 2004. It runs these parts through high-volume fabrication and prices them as commodities. The CH32V is its line of 32-bit RISC-V microcontrollers. The CH32 name covers two branches, an Arm branch and a RISC-V branch. The RISC-V branch is where the CH32V sits. That branch runs from a sub-dime device at the bottom to chips with USB, CAN, and Ethernet near the top. Every part uses a QingKe core that WCH designs in house. The line aims at the low-cost end of the microcontroller market.
The CH32V is cheap because its cores are licence-free. WCH designs them to the open RISC-V instruction set. Each chip ships with no royalty inside its cost. A fab that already runs interface chips in volume carries a microcontroller down the same cost curve. WCH pays for the core design once and spreads it across enormous quantities. That is what pushes the unit price down. A frozen RISC-V base instruction set keeps a core compatible for the life of a design. QingKe is WCH’s own name for its core line. Those cores range from a minimal RV32EC integer core to an RV32IMAFC core with hardware floating point. A buyer picks the rung whose memory, clock, and peripherals match the job. Memory grows from the cheapest rung to the top one. A design sizes the part to the firmware it carries.
The CH32V targets designs that want an entry STM32 at a lower cost. WCH shaped the chip, the packages, and the pinout around an easy switch. Some CH32V parts use the same LQFP and QFN bodies as a small STM32. Their pin arrangements sit close enough that one board can take either chip. A timer block reads like an STM32 timer. A DMA controller exposes the same channels. WCH documents the parts against STM32 classes in the open. The brief comes through in every layer a designer touches. An I2C block answers the same setup calls. A familiar interrupt model keeps the same priorities. Recognition starts at the first register read.
Each CH32V part lines up against an STM32 class. The numbering echoes that lineup. The family climbs from the CH32V003 at the bottom to the CH32V307 at the top. A CH32V103 matches the STM32F103 that filled a decade of boards. Full-speed USB and CAN arrive on the CH32V203. High-speed USB and Ethernet reach the CH32V307 for connected designs. The CH32V003 sits at the bottom, in territory an eight-bit part once held alone. Bluetooth Low Energy arrives on the CH32V208 for wireless designs. A designer who knows the STM32 range reads the CH32V range with little translation. The names alone announce which STM32 each part answers to. A team picks a rung by memory and peripherals. It checks the part against the STM32 it knows. That map holds across the whole range.
The cost floor

The CH32V003 made WCH a name outside its home market. WCH’s own repository calls it an ultra-cheap RISC-V MCU with 2KB SRAM, 16KB flash, and up to 18 GPIOs that sells for under ten cents. The chip runs at 48 MHz. It carries a 10-bit analog-to-digital converter, several timers, and three serial interfaces: USART, I2C, and SPI. A factory-trimmed 24 MHz oscillator sits on the die. A PLL lifts the core to 48 MHz. The body is an eight-pin SOP. TSSOP-20 and QFN options add more pins. The 2KB of SRAM holds a small stack and a working buffer. The 16KB of flash holds a bare-metal application with room to spare. Among 32-bit parts, the price sits at the floor.
A 32-bit core now fits a socket that an eight-bit part used to hold. The wider register and the faster clock add headroom. The firmware gains room to grow. A small RTOS fits in the memory map. A full C library lands in flash. Higher rungs add flash, peripherals, and clock speed. The licence-free core holds the cost down across the whole range. WCH builds at the volume of a company that ships interface chips by the billion. A high-volume board feels the saving on the bill-of-materials line that the run size multiplies. On a board in the tens of thousands, a few cents reach the quarter’s numbers. On a board in the millions, a few cents reach the shelf price. A purchasing manager sees the gap at the bottom of the bill of materials. The CH32V003 reaches a price an eight-bit part used to own. A production line that bought eight-bit parts for years now buys a 32-bit core. That is the whole reason the family wins the sockets it wins. An eight-bit incumbent now meets a 32-bit challenger at the bottom of the market. Volume turns the few cents into real money. Ten thousand boards make a line item. A million boards make a number on the income statement. Designers who skipped 32-bit parts on cost now run the math again. Plain C replaces the hand-tuned assembly an eight-bit part once demanded. A vendor stack and a small RTOS fit in the larger memory map. Firmware updates grow easier with room for two images.
Familiar on purpose
Cheap parts are common. The CH32V adds familiarity on top of the low price. WCH shaped the peripheral blocks to resemble the ones an STM32 designer already knows. Register names and bit fields read like the STM32 originals. A GPIO port uses set and reset registers. A USART carries a recognisable baud and control layout. An SPI block drives the familiar way. Each one maps onto the mental model a designer built on an STM32F103. Clock trees, DMA channels, and timer blocks follow the same pattern. The reset and clock control block sits where an STM32 hand expects it. A peripheral enable bit lives in a familiar control register. A hand that knows the STM32 reads these chip blocks fast. Bit positions match in many control registers. A configuration sequence ported from an STM32 often runs as written. A status flag sits in the bit a programmer reaches for. Habit carries from one part to the next.
Firmware shows the resemblance best. Driver code written against an STM32 peripheral reaches for the same register names and the same fields. WCH ships a peripheral library in the mould of the standard libraries an STM32 team already uses. The function calls land where a hand expects them. Interrupt handlers slot into a vector table arranged the familiar way. A driver for an STM32 USART needs a few renamed symbols. A SPI transfer routine moves with almost no change. The application C carries over almost untouched, because it never cared what core it ran on. A port to the CH32V measures in days. First bring-up reaches a blinking LED in an afternoon. A UART log works on the early tries. A timer interrupt fires on the same vector name. Edits land in the lowest layer alone. A header swap points the build at the new registers. A recompile produces a working image.
Boards inherit the familiarity as readily as code. Pin assignments on several CH32V parts line up closely with their STM32 counterparts. A layout drawn for a small STM32 takes the WCH part with modest changes, sometimes as a drop-in on the next respin. A team that already routed a board around an STM32F1 footprint finds the geometry close to hand. Supply and decoupling sit where habit put them. Schematic symbols, crystal and reset circuits, and the debug header carry over with the team’s existing habits. One real change sits at the debug header, because the cheapest CH32V003 speaks a single-wire debug protocol and wants the WCH-Link probe. That programming connector is the one footprint a board redraws. A team respinning an existing STM32F1 layout often keeps the same fabrication drawing, the same solder stencil, and the same pick-and-place program. The bill of materials changes by one line. A first article confirms the swap. A line that built STM32 boards builds CH32V boards the same day. The operators run the same pick-and-place file. Production sees no new process.
The silicon price is one number. A quote shows it. A buyer compares it across vendors in a minute. The adoption cost is a second number. A quick price comparison leaves it out. Familiarity does its quiet work on that second number. Crossing to an unknown architecture spends engineering weeks on a new toolchain, new drivers, new debug habits, and a fresh set of mistakes. The CH32V keeps the engineer on ground already walked. The adoption weeks shrink to a few days. A purchasing team reads the per-unit saving across the run. An engineering manager reads the adoption saving, the weeks not spent relearning. That saving lands on the schedule. A design under pressure on both the part cost and the time to ship finds the CH32V answering both at once. WCH built the resemblance in on purpose, because a cheap part that costs little to adopt is the kind that moves a design off a part it already trusts. A bare discount rarely clears that bar. A design team counts both numbers before it commits.
Familiarity covers the peripherals and the pinout, the layers a designer touches every day. A different core and a different toolchain run below those layers. A project’s lowest pieces are rebuilt to meet them. The next section takes up what those pieces are.
The line a price tag hides
A low price buys the silicon alone. Porting, qualifying, and field-proving the part are paid on top, in engineering time.
What changes underneath

The core is the honest difference under the familiar surface. A CH32V executes the RISC-V instruction set. The compiled binary, the startup code, and the lowest reset-and-boot layer are RISC-V from the first instruction. An Arm toolchain cannot target it. WCH supplies MounRiver Studio, an Eclipse-based environment over a RISC-V GCC compiler, free to download for Windows and Linux. The WCH-Link probe handles programming and on-chip debug, and it doubles as a USB-serial bridge. On the CH32V003 the debug runs over a single wire, which the WCH-LinkE revision of the probe drives directly. A team builds, flashes, and steps through code the way it would on any RISC-V part. The debugger reaches the chip through GDB and OpenOCD. The GCC toolchain underneath behaves the way GCC behaves everywhere else. A command-line build needs only the GCC and a small flash tool. PlatformIO carries the CH32V for a team that already lives there.
An open-source path runs beside the vendor one. The cheapest part drew the widest community to build it out. Developers around the CH32V003 assembled a lean GCC toolchain and a small flashing utility, gathered under community projects like ch32fun. Charles Lohr started that project for the V003. Its minichlink utility flashes the chip over the WCH-Link. A build there drops to a few files and a makefile. A project that prefers a command-line GCC and a scripted flash has somewhere to stand, with worked examples that shorten the first bring-up. Community Arduino cores reach several parts in the family. They open a sketch-and-upload flow for a team that wants one. WCH’s SDK supplies the peripheral drivers along every path. A team picks the workflow it already lives in. The CH32V fits the workflow it picks. Two toolchains reach the same chip. A beginner starts in MounRiver. A power user scripts the build in GCC.
The relearning is a short list. Three things change when a design crosses to a CH32V: the toolchain that compiles the code, the probe that programs the chip, and the lowest layer of startup. The application C holds steady. Peripheral drivers move with light edits. The board often carries over with a respin. A team spends its relearning budget on the build-and-debug setup once, at the start of the first project. It keeps the result for every project that follows. The cost is real. It is paid early, where a schedule absorbs it cleanly. The larger the run grows, the more the repeating saving outweighs that one-time setup. A second project on the same family pays none of that setup again, because the tools, the probe, and a known-good startup template are already in hand. The shorter the run, the heavier that setup weighs against the per-board saving. A team that ships ten products amortises the setup to almost nothing. The volume on the order form settles the question. That arithmetic is the engine under the whole comparison. A one-off prototype puts more weight on the setup cost. A pilot run of fifty sits between the extremes. Order quantity decides where a design lands.
The family, rung by rung
The family climbs from the floor upward. The argument shifts at each rung. At the floor, the CH32V003 holds a 48 MHz integer core in an eight-pin body. The CH32V103 reaches the STM32F103 class on a QingKe V3 core, and adds flash, SRAM, and peripherals. Full-speed USB and CAN arrive on the CH32V203, built on a V4 core. The CH32V307 carries high-speed USB, Ethernet, and a hardware floating-point unit on a V4F core. The letter F in the core name marks that floating-point unit. Other rungs fill the gaps between these. USB power delivery arrives on the CH32X035. The CH32L103 trims power for battery designs. A wireless tier runs through the CH32V208 and its Bluetooth radio. Every rung keeps the floor’s promise: a recognisable STM32 class’s capability on a core that owes no licence fee. A design moves up the family without leaving the toolchain. The same SDK covers every rung. A team learns the family once.
Supply tracks the same shape as price. WCH parts reach designers through distributors and maker channels. The CH32V003 travels the world on low-cost boards, modules, and the assembly catalogues that JLCPCB and LCSC stock by the reel. Stock runs deepest at the volume end of the family. The cost case is strongest there too. That depth suits the high-volume designs the parts aim at. A design that commits to the family early reads its second-source position with open eyes, because a single vendor stands behind these specific part numbers. A buffer of stock and a fallback part is the ordinary cost of a single-source decision. Distributors outside China widened their CH32V stock as demand climbed. A buyer in Europe or North America now orders the common parts from stock, in reels, the way it orders any jellybean MCU. Lead times track the popular parts. A V003 or a V203 ships from stock in normal conditions. A rarer rung asks for a longer lead. A reel of V003 parts ships in days from a maker catalogue. A design plans its stock buffer around the rung it chose.
| Part | Core and clock | Flash / SRAM | Role |
|---|---|---|---|
| CH32V003 | QingKe RV32EC, 48 MHz | 16 KB / 2 KB | cost floor, under ten cents, SOP-8 to QFN-20 |
| CH32V103 | RV32IMAC, up to 72 MHz | up to 64 KB / 20 KB | entry general-purpose, STM32F103 class |
| CH32V203 | RV32IMAC, up to 144 MHz | up to 64 KB / 20 KB | USB and CAN, STM32F1-class, low cost |
| CH32V307 | RV32IMAFC, up to 144 MHz | up to 256 KB / 64 KB | USB high-speed, Ethernet, hardware float |
Where the CH32V earns the socket
The choice comes down to what drives the design. The more a product turns on unit cost and ships in volume, the more the CH32V earns its socket. That is the ground where a low price and a deep supply do their heaviest work. A consumer device, a high-volume controller, a board where a few cents decide the target cost: these are the part’s strongest ground. A toy, a lighting controller, a smart-home node, a metering front end each ship in numbers that turn a small per-unit saving into a real budget line. A penny saved on a million boards funds a feature somewhere else. A part held in stock through a shortage protects a ship date. The larger the run, the more the per-board saving multiplies into the budget. Cost sets the brief for these products from day one. A cents-level target shapes every part choice on the board. A buyer chases the lowest qualified source for each line.
The more a product leans on the breadth of the STM32 ecosystem, the more the established part keeps the socket. A peripheral only the STM32 carries, or a qualification the established part already holds, points the same way. A lower price covers the silicon and stops there. A library that has to exist, a part number a customer wrote into a specification, a safety file that took years to assemble: a price quote reaches none of these. An automotive tier-one that must ship an AEC-Q100 part reads the established part as the safer hold. A medical build with a filed safety case reads it the same way. A product whose customer named a specific STM32 in the contract reads it the same way. A reference design, a vendor library, a tested middleware stack all point back to the incumbent. A newcomer earns that trust over time. A team reads its own design for how heavily it leans on that wider world. A deep software stack ties a product to its first vendor. A long qualification raises the cost of any change. These raise the cost of any switch.
The honest summary stays deliberately narrow. The CH32V holds the band of the market where price leads the decision. That band is wide. It widens further each year. An STM32 team adopts the part on the peripheral habits it already has. Price leads in consumer goods, in high-volume control, in anything that competes on a shelf. A team that keeps the frame in view spends its evaluation time on one question: the weight of the ecosystem above the chip. Everything else is detail hung on that frame. That market covers a large share of all microcontroller volume. Consumer goods ship in the billions of units a year. A part drawn for that volume meets demand already in motion.
One question carries the decision: how much a design leans on the world above the chip. The less it leans, the more ready the CH32V already is for its socket. A cost-driven design that works inside one vendor’s tools sits on the ready side today. Each year it sits there more firmly, as the family fills out and the supply deepens. That ready side widens year on year, as more of the family ships, more community tooling lands, and more designers carry the part in their hands. A team reads where its own design falls on that line. The later a choice locks in, the more a change to it costs. The early read is the cheap one. A team that places the part early carries it through to production. The SDK and the toolchain stay the same from prototype to volume. A design that reads its own needs honestly lands on the right part. The CH32V waits on the low-cost side of that line.
Is the CH32V cheaper than an STM32 in practice?
Yes, by a wide margin at the low end. The CH32V003 sells for under ten cents. Every rung of the family sells below the STM32 of its class. The licence-free RISC-V core and WCH’s high-volume manufacturing hold the price down across the whole range.
Can I port my STM32 firmware to a CH32V?
The application C carries over with little change. WCH shaped the peripheral registers to resemble the STM32 originals, so driver code ports with light edits. The core is RISC-V, so the startup code, the toolchain, and the debug probe are the pieces that change.
What toolchain does the CH32V use?
WCH ships MounRiver Studio, an Eclipse-based IDE over a RISC-V GCC compiler, with the WCH-Link probe for programming and debug. The CH32V003 also has a community open-source GCC and flashing flow. A team builds and debugs it as a RISC-V part, with WCH’s SDK supplying the drivers.
When should a design stay on the STM32?
When it leans on the breadth of the STM32 ecosystem, a peripheral only the STM32 offers, or a qualification the established part already carries. A lower price covers the silicon and stops there, so the established part keeps those sockets.
Is the CH32V available outside China?
WCH parts are stocked through distributors and maker channels. The CH32V003 travels widely on low-cost boards and modules. Supply runs deepest at the volume end of the family. The cost case is strongest there too, which suits the high-volume designs the part aims at.

























