The STM32G0 as a lower-cost STM32F0
The STM32G0 is ST’s low-cost entry-level microcontroller, the newer and cheaper replacement for the older STM32F0. Both run a small Arm Cortex-M0-class core and go into the same kind of work: a sensor, a charger, a remote, or the housekeeping corner of a larger board. The G0 arrived years after the F0, built on a smaller manufacturing process. That process is what lets it sell for less. The reason repays a few minutes of attention before the next low-cost design begins.
Newer and cheaper

Price usually tracks age in silicon. A part in production for years has paid off its design cost and runs on a tuned, paid-for line. The STM32 entry level does not follow that rule. The G0 reached the market years after the F0. It sells for less today. The reason is the silicon itself. The dominant cost in a small microcontroller is the area of its die. Die area is set by the manufacturing process. A finer process packs the same logic and memory into less silicon. The G0 uses a far finer process than the F0. That one fact sets the price between the two parts, more than anything on the datasheet does. These parts cost cents and sell by the millions into products that never name the chip inside them.
So at this end of the range, the newer part is the one to reach for first.
Why a newer part costs less
The G0 is built on a 90-nanometre process. ST has described it as the first of its mainstream lines built on a 90 nm node, the same generation it uses for the low-power STM32L4. The older F0 sits two process steps back. Halving the feature size in each direction fits close to four times the logic and memory into one square millimetre. The same processor, flash, and peripherals take a far smaller piece of silicon on the G0. The wafer that carries them costs the same amount to process. The 90-nanometre generation is mature and high-yielding, the node ST picked for a part that has to stay cheap across millions of units. It runs the logic at a lower core voltage, part of how the same design draws less current. ST shares that node across several of its modern lines, so the G0 rides a process the company already runs at scale.
Smaller silicon is the whole cost story. A wafer costs a roughly fixed amount to process. The number of good die it yields sets the price of each one. A die half the size in each direction yields close to four times as many parts from that wafer. Each part then costs a fraction of the larger F0 die. ST set the G0 line up for a low bill-of-materials cost from the start. The finer process is what holds the margin at that low price. At a distributor, an entry G0 often lists at or below the F0 it descends from. In volume the smallest G0 parts sell well under a dollar, the band that suits disposable and high-volume consumer designs where every cent on the bill of materials counts. ST runs the G0 in high volume. That volume drives the per-part cost down further on a line already cheap to build. Yield helps as well: a smaller die catches fewer fatal defects, so a larger share of each wafer ships as good parts.
The finer process pays again in power. A G0 holds under 100 microamps per megahertz at its full clock. Smaller transistors switch at a lower voltage and leak less when idle, so the active draw and the standby draw both stay low. ST built the G0 around a single internal supply domain, the one power line of its launch name, which cuts the regulators on the board and trims the quiescent current. A coin-cell or energy-harvesting design has real headroom on a G0, at the lower part price. The G0 holds several low-power modes below its run state, down to a standby that keeps only the wake logic alive on a few microamps. A product that spends nearly all of its life asleep draws almost nothing between events, then comes back in microseconds when one arrives.
None of this reaches the F0 without rebuilding the chip from the masks up. A mature part never gets that rebuild. Its 180-nanometre mask set is fixed for the life of the line. The F0 stays where it is, an older device on an older process, at the price it has always carried. The G0 is ST’s replacement for that slot, on the process its modern catalogue already shares. ST now starts a new entry-level design on the G0, the place the F0 once held. The G0 carries that newer process into every part number in the range, from the smallest pin count to the largest. A design that starts there inherits the lower cost and the lower power on every variant it might grow into.
The core stepped up too
The cheaper part runs the quicker core. The G0 uses the Arm Cortex-M0+, a later revision of the small Cortex-M0 design. The M0+ runs a two-stage pipeline, which trims the cost the processor pays on each branch. It reaches its own GPIO port in a single cycle, so a bit-banged signal toggles in one clock. It adds an optional memory protection unit and a relocatable vector table, both useful to real firmware. Arm rates the M0+ near 0.95 Dhrystone MIPS per megahertz, a little higher than the M0 it replaces. The G0 runs that core at 64 megahertz. A control loop or a sensor-fusion step finishes in fewer microseconds, which frees more of each cycle for the part to sleep. On a software-driven protocol the faster GPIO turns spare cycles into a quicker bus. Faster work and a lower price arrive together, the part of the G0 that surprises a designer meeting it for the first time. The Cortex-M0+ keeps the same Thumb instruction set, so a compiler targets it with no new back end. The core nests its interrupts and counts cycles with a system timer the way the larger Cortex-M parts do, so code and habits carry upward into the rest of the STM32 range. Single-cycle access to the GPIO matters for any job that drives a signal in software, from a status-LED pattern to a bit-banged sensor link.
What the swap buys
The move brings memory headroom. A G0 reaches 512 kilobytes of flash and 144 of RAM at the top of the range, four times the working memory the F0 topped out at. That space changes what the part holds. A design keeps a bootloader, the main application, and a block of logged data in flash at once, which is what a safe over-the-air update needs. The extra RAM lets a security session, a file-system buffer, and a sensor pipeline sit together. A field update keeps two copies of the application in flash, the running one and the incoming one, with room to spare. A design that pressed against the largest F0 fits inside the G0 on the same low-cost footing. Flash on the G0 sits behind an accelerator that feeds the core at full clock, so the larger memory costs no speed to reach. The flash carries error correction that catches a flipped bit before it reaches the core, which a long-lived product leans on. A bootloader in a protected sector takes a fresh image over a serial or USB link and swaps it in on the next boot, the backbone of a field-updatable product.
The peripheral set shows the years between the parts. The G0 carries the communication blocks ST standardised across its newer mainstream lines, a generation on from the F0’s UART, SPI, I2C, and classic CAN 2.0B. Several of them decide whether a part can take a job. Its CAN runs as CAN FD, the flexible-data-rate version that carries up to 64 bytes in a frame and pushes the data phase toward 8 megabaud, the rate that industrial and automotive buses now ask for. Its ADC is a 12-bit converter sampling near 2.5 million times a second, with hardware oversampling that trades raw speed for extra effective bits, so a control loop reads its sensors more often and acts on cleaner numbers. The upper G0 parts add a USB controller with a USB-C Power Delivery interface in the silicon, which put the G0 into the charger, adapter, and dock market. ST gave the line a fuller set of low-power stop and standby modes, the kind of sleep control a battery product leans on. The timers carry more channels and finer control, enough to drive several PWM outputs and capture inputs from one block. A motor-control or power-conversion job that needed an external timer on an F0 design folds that onto the G0 itself. The DMA and the interrupt controller follow the uniform layout the modern STM32 range shares, so a driver written for a G0 reads almost line for line like one for an L4 or a G4. A team that learns the G0’s peripherals learns a dialect it meets again on every newer STM32. The F0’s older dialect ends with the F0. The advanced-control timer on the G0 brings complementary outputs and hardware dead-time insertion, the pieces a brushless or stepper motor drive needs. Some parts add a pair of analog comparators that run a simple closed loop without waking the core. The real-time clock keeps a calendar and an alarm through the deepest sleep, on the same coin cell that powers the rest. Some parts carry a DAC for a simple waveform or a voltage reference, more analog kept on chip. A watchdog and a brown-out detector hold the part safe through a sagging supply, the housekeeping a deployed product leans on.
The two parts line up like this:
| STM32F0 | STM32G0 | |
|---|---|---|
| Arm core | Cortex-M0 | Cortex-M0+ |
| Max clock | 48 MHz | 64 MHz |
| Process node | 180 nm | 90 nm |
| Flash, top | around 256 KB | around 512 KB |
| RAM, top | around 32 KB | around 144 KB |
| Run current | about 250 µA/MHz | under 100 µA/MHz |
| CAN | CAN 2.0B | CAN FD |
| ADC | 12-bit, about 1 MSPS | 12-bit, about 2.5 MSPS |
The board around the part gets simpler. A G0 runs from a single supply rail, one fewer thing to feed on the board. Fewer rails mean fewer regulators, fewer decoupling networks, and less board area given to power. The package range spans an 8-pin device up to a 100-pin one, so one family covers a bare sensor node and a denser controller on a single line. ST splits the range into a value line and a fuller-featured line. A plain job takes the cheapest variant. A heavier one steps up inside the same family. A design picks the pin count and the line it needs and stays on one core. ST keeps its mainstream families, the G0 among them, under a long product-availability commitment, so a design that standardises on the part orders it for years to come. Package choices run from a tiny leadless part up to a quad-flat-pack, in tape-and-reel for a pick-and-place line or in trays for a bench. A single board footprint can accept several pin counts in one package, leaving room to grow or shrink the part later.
The lower price costs the design nothing in return. A G0 costs less, draws less, computes more, holds more memory, and carries newer peripherals, all at once. That kind of clean improvement is rare in a part change. ST now treats the G0 as the default entry-level start. The F0 keeps one advantage: a design that already runs it. That advantage holds only until the next board revision. A buyer reads one datasheet and one reference manual for the whole family, then reuses that knowledge on the next design.
Moving an F0 design across

Moving across is a migration. The G0 does not share the F0’s footprint, so a board built around an F0 needs its own fresh layout to carry a G0. The pinout differs. The power pins move. The package options are their own set. The boot configuration and the option bytes differ between the two parts, so the production programming script and the test fixture each need a G0 version. ST publishes a migration guide, application note AN5145, that walks the move register by register and flags every peripheral that changed. The work sits in three places: the peripherals that gained capability, the clock tree, and the analog corners that moved. The application logic above the drivers rarely needs touching. The core runs the same instruction set, so the same compiler and debugger carry over. The same ST-LINK probe and CubeIDE project drive both parts, so a team keeps its bench and its build untouched while bringing the G0 up. STM32CubeMX reads the target part and lays out the clock tree, the pin assignment, and the peripheral setup in a graphical view, then writes the start-up code for it. The tool also generates the project for the chosen IDE, so a build is ready before a line of application code is written.
The application code travels more easily than the board. Both parts live in STM32Cube. CubeMX regenerates the pin and clock setup for the G0. The HAL calls keep their shape. The peripherals that gained capability need the attention. CAN code written for the classic 2.0B controller moves onto the FD driver, with its different frame format and timing. ADC setup built around one megasample reworks for the faster converter and its oversampling. The clock tree re-derives 64 megahertz from the G0’s internal oscillator and PLL. The plain UART, SPI, and I2C paths carry over with a part-number change, since those blocks behave the same on both. A driver layer that already calls the HAL keeps its function names and its structure across the move. The interrupt vector table moves to its new addresses. The linker script takes the G0’s memory map.
The effort is real, a board respin plus a focused firmware pass. It pays back on every unit shipped after. A product still early in its life, or one heading for a redesign anyway, absorbs the move at almost no extra cost. The harder call is a mature design in steady volume. It weighs the per-unit saving against the one-time respin and re-test. Over a long enough run, the saving wins. Every unit shipped adds to it. The migration is paid once. A rough rule helps: the higher the volume and the longer the life left, the sooner the saved cents clear the respin. The bulk of the firmware time goes into the handful of peripherals that gained capability. The rest of the codebase compiles and runs as it stood.
When the F0 still fits
The F0 has not left the catalogue. A few situations keep it in place. A design in volume, fully qualified, with no other reason to open the board, leaves a working F0 alone until a respin comes for another cause. A factory with F0 stock on the shelf runs it down first. A product certified to a safety or emissions standard on the F0 stays put to avoid a re-certification, a cost that can dwarf the per-unit saving on a low-volume product. A long automotive or industrial program with a frozen bill of materials holds its parts for years by contract. A board too tight for anything but the exact F0 package keeps it until the enclosure is redrawn. In each case something outside the silicon keeps the F0 in place. The part itself is neither better nor cheaper. The decision was settled before the silicon came into it. Stock already on the shelf is money the company has spent. Burning it down before a change wastes nothing. A team that already qualified an F0 design carries real paperwork behind it. Reopening that paperwork has its own cost.
For a fresh design with no such anchor, the choice runs one way. The G0 is the cheaper part and the better one.
Why is the newer STM32G0 cheaper than the older STM32F0?
The G0 uses a 90-nanometre process, two steps finer than the F0’s 180. The finer process fits the same logic, flash, and peripherals onto a smaller die, so each wafer yields more parts and each part costs less. Price in silicon tracks the process. How long a part has been in production matters far less.
Is the STM32G0 pin-compatible with the STM32F0?
No. The G0 does not drop onto an F0 footprint, so moving from one to the other is a migration that needs its own board layout and bring-up. ST’s application note AN5145 documents the differences. The application code ports far more easily than the hardware, since both parts share the STM32Cube tools and the HAL.
What does the G0 gain over the F0 besides a lower price?
The G0 runs a newer Cortex-M0+ core at up to 64 megahertz. It reaches 512 kilobytes of flash and 144 of RAM, draws under 100 microamps per megahertz, and carries newer peripherals such as CAN FD and a faster 12-bit ADC. It improves on the F0 in cost, power, compute, memory, and peripherals together.
When should a design still use the STM32F0?
When the reason to keep it sits outside the chip. A design already qualified and shipping in volume, a factory holding F0 stock, or a product certified to a standard on the F0 may all leave it in place until a board revision comes for another cause. For a new design with no such tie, the G0 is the stronger choice.
How much lower is the G0’s power draw than the F0’s?
A G0 holds under 100 microamps per megahertz at its full 64. The finer 90-nanometre process is the reason. For a battery or energy-harvesting design, that level decides how long the product runs between charges.


































