#klipper #kalico #mcu #stm32 #stm32g0b1 #firmware #hardware-design #electronics
# Overview
Detailed comparison of every STM32 (and STM32-compatible) chip Klipper can build for — 24 selections across the F0, F1, F2, F4, F7, G0, G4, H7 and L4 families plus the Nation N32G45x clones — measured against the **STM32G0B1** as the baseline.
Two kinds of facts are kept separate: what the **silicon** can do (ST / Nations product pages and datasheets) and what **Klipper actually does with it** (read from `src/stm32/` on Klipper master `ce7002be`, 2026-09-18). They diverge more than you'd expect — see [[#Gotchas]].
Headlines:
- The G0B1 is the only chip in the set that pairs a cheap Cortex-M0+ with **FDCAN + USB at the same time**, so it can be a USB-to-CAN bridge, with **144 KB RAM** — more than an F446.
- Its weak spot is **raw step rate**: at 1103K steps/s it's the second-slowest STM32 Klipper benchmarks (only the F042 is slower). The benchmarked G4, F4 and H7 parts (G431, F407/F446, H723) are 3.3–6.7× faster.
- For a new design, the realistic alternatives to G0B1 are **G474** (same feature set, G431-class CPU — ~3.3× on the G431 benchmark — 128 KB RAM) and **H723** (mainboard-class). Everything else is legacy, feature-limited, or both.
- **Klipper and Kalico clock the G0B1's USB from the PLL, not HSI48 + CRS — so fit the crystal.** See [[#Gotchas]].
Related: [[Klipper Supported Microcontrollers]] · [[Klipper Compatible MCU Comparison]] · [[STM32G0B1CBT6 LQFP-48 Layout Playbook]]
# The baseline — STM32G0B1
| | STM32G0B1 |
|---|---|
| Core | Cortex-M0+, 64 MHz |
| Flash / SRAM | 128 / 256 / 512 KB (xB / xC / xE) · 144 KB SRAM |
| USB | FS device + host, crystal-less capable in silicon (HSI48 + CRS) |
| CAN | **2× FDCAN** (Klipper runs them as classic CAN) |
| Other | 2× UCPD, 6× USART + 2× LPUART, 3× I2C, 3× SPI, 12-bit ADC up to 16 ext. ch, multiple 5 V-tolerant I/O, 1.7–3.6 V |
| Packages | 32–100 pin (LQFP-48 `CBT6` is the common toolboard part) |
| Klipper | 64 MHz · USB, CAN (PA11/PA12, PA11/PB9, PB0/PB1, PB12/PB13, PD0/PD1, PD12/PD13, PC2/PC3; PB8/PB9 as a low-level option) · **USB-to-CAN bridge** (bridge side can also use PB8/PB9 or PB5/PB6) · 8 KiB bootloader option · ROM-DFU reboot from the host |
| Step rate | 1103K (1 stepper) / 790K (3 steppers) |
| Klipper since | 0.11.0 (2022-11) |
| Boards | BTT EBB36/42 v1.1–v1.2, EBB SB2209, SKR Mini E3 v3, Manta E3EZ / M4P / M5P / M8P |
Why it's the gold standard: it's the cheapest part that does *everything* a modern Klipper board wants — native USB, native CAN, the bridge mode that lets a mainboard be the CAN adapter, and enough RAM that you never think about it. It's what BTT standardised on, so reference designs and community configs are everywhere.
# Silicon comparison
Datasheet capabilities, not what Klipper uses. Ranges cover the part family behind each Klipper selection.
| Chip | Core | Max MHz | Flash | SRAM | USB | CAN |
|---|---|---|---|---|---|---|
| F031 | M0 | 48 | 16–32 KB | 4 KB | — | — |
| F042 | M0 | 48 | 16–32 KB | 6 KB | FS dev, crystal-less | 1× bxCAN ¹ |
| F070 | M0 | 48 | 32 / 128 KB | 6 / 16 KB | FS dev (needs HSE) | — |
| F072 | M0 | 48 | 64–128 KB | 16 KB | FS dev, crystal-less | 1× bxCAN ¹ |
| F103 | M3 | 72 | 16 KB–1 MB | 6–96 KB | FS dev (needs HSE) | 1× bxCAN ¹ |
| F207 | M3 | 120 | 256 KB–1 MB | 128 KB | OTG FS + OTG HS | 2× bxCAN |
| F401 | M4F | 84 | 128–512 KB | 64–96 KB | OTG FS | — |
| F405 | M4F | 168 | 512 KB–1 MB | 192 KB ² | OTG FS + HS | 2× bxCAN |
| F407 | M4F | 168 | 512 KB–1 MB | 192 KB ² | OTG FS + HS | 2× bxCAN (+ Ethernet) |
| F429 | M4F | 180 | 512 KB–2 MB | 256 KB ² | OTG FS + HS | 2× bxCAN (+ Ethernet, LTDC) |
| F446 | M4F | 180 | 256–512 KB | 128 KB | OTG FS + HS | 2× bxCAN |
| F765 | M7 | 216 | 1–2 MB | 512 KB | OTG FS + HS | 3× bxCAN (+ Ethernet) |
| G070 | M0+ | 64 | 128 KB | 36 KB | — | — |
| G071 | M0+ | 64 | 64–128 KB | 36 KB | UCPD only, no USB data | — |
| G0B0 | M0+ | 64 | 512 KB | 144 KB | FS dev + host | — |
| **G0B1** | **M0+** | **64** | **128–512 KB** | **144 KB** | **FS dev + host, crystal-less** | **2× FDCAN** |
| G431 | M4F | 170 | 32–128 KB | 32 KB ³ | FS dev, crystal-less | 1× FDCAN |
| G474 | M4F | 170 | 128–512 KB | 128 KB ³ | FS dev, crystal-less | 3× FDCAN |
| H723 | M7 | 550 | 512 KB–1 MB | 564 KB | OTG HS (FS PHY) | 3× FDCAN |
| H743 | M7 | 480 ⁴ | 1–2 MB | 1 MB | 2× OTG (HS + FS) | 2× FDCAN |
| H750 | M7 | 480 | 128 KB | 1 MB | 2× OTG (HS + FS) | 2× FDCAN |
| L412 | M4F | 80 | 64–128 KB | 40 KB | FS dev, crystal-less | — |
| N32G452 | M4F | 144 | 128–512 KB | 144 KB | FS dev | yes (CAN 2.0) |
| N32G455 | M4F | 144 | up to 512 KB | 144 KB | FS dev | 2× CAN 2.0 |
1. USB and CAN share a dedicated packet SRAM. **F103:** 512 bytes, and the two can't run at the same time, so Klipper blocks the USB-CAN bridge on F1. **F042 / F072:** 1 KB ("USB/CAN RAM" at `0x40006000`); with CAN clocked, USB gets the first 768 B and CAN the last 256 B, so both run together and Klipper allows the bridge. The F042 datasheet puts it as "the last 256 byte are used for CAN peripheral if enabled".
2. Includes 64 KB CCM RAM.
3. Includes CCM RAM: G431 = 22 KB + 10 KB CCM; G474 = 96 KB + 32 KB CCM.
4. H743 silicon **rev V** = 480 MHz; **rev Y** = 400 MHz (VOS0 not available on rev Y).
# Klipper comparison
What Klipper's build actually configures. "Kconfig flash / RAM" is what the linker assumes — deliberately the smallest common variant, not the part's maximum.
| Chip | Klipper clock | Kconfig flash / RAM | USB | CAN driver | USB→CAN bridge | Crystal-less USB in Klipper | ROM-DFU reboot | Since |
|---|---|---|---|---|---|---|---|---|
| F031 | 48 MHz | 32 K / 4 K | — | — | — | n/a | — | ==?== |
| F042 | 48 MHz | 32 K / 6 K | usbfs | bxCAN | yes | only with "Internal clock" | yes | 0.8.0 |
| F070 | 48 MHz | 128 K / 16 K ⁵ | usbfs, crystal only | — | — | no | — | 0.9.0 |
| F072 | 48 MHz | 128 K / 16 K | usbfs | bxCAN | yes | only with "Internal clock" | yes | ==?== |
| F103 | 72 MHz (64 internal) | 64 K / 20 K ⁵ | usbfs, crystal only | bxCAN | **no** | no | — | 0.7.0 |
| F207 | 120 MHz | 256 K / 128 K | usbotg | bxCAN | yes | no | — | 0.9.0 |
| F401 | 84 MHz | 256 K / 64 K | usbotg | — | — | no | yes | 0.8.0+ ⁶ |
| F405 | 168 MHz | 512 K / 128 K | usbotg | bxCAN | yes | no | yes | 0.8.0+ ⁶ |
| F407 | 168 MHz | 512 K / 128 K | usbotg | bxCAN | yes | no | yes | 0.8.0+ ⁶ |
| F429 | **168 MHz** | 512 K / 128 K | usbotg | bxCAN | yes | no | yes | 0.8.0+ ⁶ |
| F446 | 180 MHz | 512 K / 128 K | usbotg | bxCAN | yes | no | yes | 0.8.0+ ⁶ |
| F765 | 216 MHz | 2 M / 512 K | usbotg | **none** | — | no | yes | 0.12.0 |
| G070 | 64 MHz | 128 K / 36 K | — | — | — | n/a | — | 0.12.0 |
| G071 | 64 MHz | 128 K / 36 K | — | — | — | n/a | — | 0.12.0 |
| G0B0 | 64 MHz | 128 K / 144 K | usbfs | — | — | **no** (PLL) | yes | 0.12.0 |
| **G0B1** | **64 MHz** | **128 K / 144 K** | **usbfs** | **FDCAN** | **yes** | **no (PLL)** | **yes** | **0.11.0** |
| G431 | 170 MHz | 128 K / 32 K | usbfs | FDCAN | yes | yes (HSI48 + CRS) | yes | 0.12.0 |
| G474 | 170 MHz | 256 K / 128 K | usbfs | FDCAN | yes | yes (HSI48 + CRS) | yes | 0.12.0 |
| H723 | 520 MHz | 256 K / 128 K | usbotg (HS core) | FDCAN | yes | yes (HSI48 + CRS) | yes | 0.12.0 |
| H743 | **400 MHz** | 2 M / 128 K | usbotg, PA11/12 or PB14/15 | FDCAN | yes | yes (HSI48 + CRS) | yes | 0.11.0 |
| H750 | 480 MHz | 128 K / 128 K | usbotg, PA11/12 or PB14/15 | FDCAN | yes | yes (HSI48 + CRS) | yes | 0.11.0 |
| L412 | 80 MHz | 64 K / 40 K | usbfs | — | — | yes (HSI48 + CRS) | yes | 0.11.0 |
| N32G452 / 455 | 128 MHz (96 with USB, 64 internal) | 128 K / 64 K | usbfs, crystal only | bxCAN (F1 path) | **no** | no | — | 0.12.0 |
5. Low-level option for the rare small variants: F070x6 = 32 K / 6 K, F103x6 = 32 K / 10 K.
6. The family was ported in 0.8.0 ("STM32F4"); the release notes don't say when each variant landed.
"ROM-DFU reboot" means Klipper can jump straight into ST's system bootloader on request from the host (`STM32_DFU_ROM_ADDRESS` is set), so a board without Katapult can still be reflashed over USB without touching BOOT0.
## Other per-chip Klipper differences
- **Hardware I2C / SPI** — not built for the **F031**; it only gets software I2C/SPI.
- **Hardware PWM** — F042, F070, F072, F1, F4, F7, G0, G4, H7. **Not** F031, F207 or L412.
- **SDIO** — F4 only.
- **Step-on-both-edges optimisation** — everything except H7.
- **Timer** — F0 and G0 (M0/M0+, no DWT cycle counter) use a hardware timer interrupt (`stm32f0_timer.c`); everything else uses the Cortex-M DWT cycle counter.
- **Code-size mode** — `HAVE_LIMITED_CODE_SIZE` (`-Os`, trimmed features) turns on below 64 KB flash: F031, F042, F070x6, F103x6.
- **Bootloader offsets offered**
- G0 / G4: 8 KiB only
- F0: 4 KiB (all); 8 KiB (F042, F070, F072); 16 KiB (F072)
- F1: 4 / 8 / 28 / 32 / 36 / 64 KiB for all F1-path parts; F103 also gets 2 / 16 / 20 / 34 KiB (the widest menu, because of all the vendor bootloaders)
- F2 / F4: 32 KiB (all); 16 KiB (F207, F401, F405/407/429); 48 KiB (F401, F405/407/429); 64 KiB (F4 only); "128 KiB with 512 byte offset" (F405/407/429)
- F7 / H723 / H743 / H750: 128 KiB (F7 and H750 also 32 KiB)
- L4: "No bootloader" only — flash at 0x8000000 (ROM DFU)
# Step-rate benchmarks vs G0B1
From Klipper's `docs/Features.md`. Only these STM32s are benchmarked.
| Chip | 1 stepper | × G0B1 | 3 steppers | × G0B1 |
|---|---|---|---|---|
| STM32F042 | 814K | 0.74× | 578K | 0.73× |
| **STM32G0B1** | **1103K** | **1.00×** | **790K** | **1.00×** |
| STM32F103 | 1180K | 1.07× | 818K | 1.04× |
| STM32G431 | 3617K | 3.28× | 2452K | 3.10× |
| STM32F407 ⁷ | 3652K | 3.31× | 2459K | 3.11× |
| STM32F446 | 3913K | 3.55× | 2634K | 3.33× |
| STM32H723 | 7429K | 6.74× | 8619K | 10.91× |
| *RP2040 (context)* | *4000K* | *3.63×* | *2571K* | *3.25×* |
| *RP2350 (context)* | *4167K* | *3.78×* | *2663K* | *3.37×* |
7. Klipper measured the F407 by running an F407 binary on an F446.
The G0B1 number is fine for a toolhead (one extruder stepper) and adequate for a Manta-class mainboard at normal print speeds. It's the thing to watch if you're driving many high-microstep steppers fast from one chip.
# Family by family, vs G0B1
## F0 — F031, F042, F070, F072
Cortex-M0 at 48 MHz. The G0 is effectively this family's replacement.
- **vs G0B1:** slower core (48 vs 64 MHz, M0 vs M0+), far less RAM (4–16 KB vs 144 KB), bxCAN instead of FDCAN, and USB/CAN share a 1 KB packet buffer (768 B USB / 256 B CAN).
- **F031** — no USB, no CAN, no hardware I2C/SPI in Klipper, 4 KB RAM. Serial-only helper MCU. No reason to design one in.
- **F042** — crystal-less USB and bxCAN (bridge-capable) in a 4×4 mm package, but only 32 KB flash / 6 KB RAM. Cartographer v3 uses it. Full treatment in [[Klipper Compatible MCU Comparison]].
- **F070** — USB but no CAN, and USB needs a crystal. Monoprice Mini Delta / Select Mini v2.
- **F072** — the "big F042": 128 KB / 16 KB, bxCAN, crystal-less USB, USB-CAN bridge. The original BTT EBB36/42 **v1.0** and Hermit Crab used it; BTT then moved EBB to G0B1 at v1.1, which says it all.
## F1 — F103 (+ N32G45x, GD32 clones)
Cortex-M3 at 72 MHz. The chip from the Ender 3 / SKR Mini E3 v1–v2 era; about 50 printer configs in Klipper's `config/` use it.
- **vs G0B1:** about the same step rate (1.07×), much less RAM (Klipper assumes 20 KB), USB needs a crystal, and **no USB-CAN bridge** — Kconfig blocks it for all F1 parts because USB and CAN can't run together.
- Klipper also has an "Only 10KiB of RAM" option for F103x6 and a "Disable SWD at startup" option for **GigaDevice GD32F103** clones, which can't reliably free PA13/PA14 at run time.
- **N32G452 / N32G455** (Nations Technologies) are register-compatible F103s with a Cortex-M4F at 144 MHz and 144 KB RAM. Klipper builds them through the F103 code path, with their own ADC driver and PLL setup, and runs them at 128 MHz (96 MHz if USB is enabled, 64 MHz on the internal clock). The Voxelab Aquila N32 variant is the known board. Treat as "run Klipper on a board you already own", not something to design in.
## F2 — F207
Cortex-M3 at 120 MHz, 128 KB RAM, OTG + 2× bxCAN. A stepping stone between F1 and F4. No board in Klipper's config tree uses it.
- **vs G0B1:** faster, similar RAM, bridge-capable, but old and more expensive, and it gets no hardware PWM or ROM-DFU reboot in Klipper. No reason to pick it.
## F4 — F401, F405, F407, F429, F446
Cortex-M4F. The workhorse mainboard family of 2019–2023.
- **vs G0B1:** 3.3–3.6× the step rate. Klipper uses 64–128 KB RAM against G0B1's 144 KB. The F405/F407's extra 64 KB is CCM; the F429 does have 192 KB of normal SRAM, but Klipper's Kconfig only uses 128 KB of it. bxCAN rather than FDCAN, and USB clocked from a PLL. SDIO support (F4 only).
- **F401** (84 MHz, **no CAN**) — Creality Ender 3 S1 / 5 S1 / Sermoon, Artillery Sidewinder X2/X3, Neptune 3 Pro, FYSETC Cheetah v2.
- **F405 / F407** (168 MHz) — BTT SKR Pro / SKR 2 / GTR, MKS Monster8 / Robin Nano v3, Mellow Fly boards, Prusa MINI Buddy (F407), EZBoard v2 (F405).
- **F429** — rated 180 MHz, but Klipper groups it with F405/F407 and **runs it at 168 MHz**. Octopus v1.1 shipped with F446 or F429; SKR 2 with F407 or F429.
- **F446** (180 MHz) — BTT Octopus / Octopus Pro, FYSETC Spider / S6, LDO Leviathan, MKS Rumba32.
- Verdict: fine on boards you own. For new designs the G474 matches it on CPU and adds FDCAN and crystal-less USB.
## F7 — F765
Cortex-M7 at 216 MHz, 512 KB RAM, 3× bxCAN in silicon.
- **vs G0B1:** much faster and more RAM, but **Klipper has no CAN support for F7**: `HAVE_STM32_CANBUS` leaves it out, so it's USB/serial only and can't bridge. The only board config is `remram`. The H723 is the better M7 in every way that matters to Klipper.
## G0 — G070, G071, G0B0, G0B1
Cortex-M0+ at 64 MHz.
- **G070 / G071** — no USB and no CAN; serial only, 36 KB RAM. No boards in Klipper's config tree. The G071's UCPD is USB-PD negotiation only, not a USB data port.
- **G0B0** — the "value line" G0B1: same 512 KB / 144 KB and USB, but **no FDCAN**, no UCPD, and a 2.0–3.6 V supply. Only worth it for a USB-only board where a few cents matter.
- **G0B1** — the baseline (above).
- On all G0 parts Klipper sets the UCPD1/UCPD2 strobe bits at boot so the dead-battery pull-downs on the CC pins don't load those GPIOs, and it reserves **PF0/PF1** for the crystal when one is configured.
## G4 — G431, G474
Cortex-M4F at 170 MHz with FDCAN, crystal-less USB, UCPD and math accelerators (CORDIC, FMAC — Klipper doesn't use them).
- **G431 vs G0B1:** 3.3× step rate and the same FDCAN + USB + bridge feature set, but **only 32 KB RAM** (22 KB + 10 KB CCM) against G0B1's 144 KB, and 128 KB flash max. Klipper builds fine, but you have far less headroom for move queues and sensor buffers.
- **G474 vs G0B1:** the true "G0B1 but faster": 3× FDCAN, 128 KB RAM, 256 KB flash in Klipper (512 KB part max), and Klipper clocks USB from HSI48 + CRS, so **no crystal is needed for USB**. It also has HRTIM and 5 ADCs. Costs more and comes in bigger packages (48–128 pin).
- No shipping board in Klipper's `config/` uses either yet.
## H7 — H723, H743, H750
Cortex-M7, mainboard class.
- **vs G0B1:** 6.7× (1 stepper) to 10.9× (3 steppers) the step rate, 128 KB RAM in Klipper (the silicon has 564 KB–1 MB), FDCAN, crystal-less USB via HSI48 + CRS, bridge-capable, and a 128 KiB bootloader offset. The 25 MHz crystal is typical on BTT boards. Bigger packages (100+ pin), more power, higher cost.
- **H723** — the pick. Rated 550 MHz; **Klipper runs it at 520 MHz**. BTT Octopus Max EZ, Octopus Pro v1.0/v1.1 (H723 variant), SKR 3 (H723 variant).
- **H743** — **Klipper runs it at 400 MHz** so rev Y silicon works; rev V could do 480. Its USB can be on PA11/PA12 or PB14/PB15, and it has an extra CAN pin option on PH13/PH14. SKR 3 (H743 variant), BIQU BX.
- **H750** — the H743's 128 KB-flash value line; Klipper runs it at 480 MHz (Kalico: 400). Klipper offers 32 KiB and 128 KiB bootloader offsets; the 128 KiB one puts the app past the 128 KB of *guaranteed* flash, so confirm what the board's bootloader expects before choosing it. No boards in `config/`.
## L4 — L412
Cortex-M4F at 80 MHz, 40 KB RAM, crystal-less USB, **no CAN** in silicon.
- **vs G0B1:** a faster core, but a quarter of the RAM and no CAN. Klipper assumes 64 KB flash. A niche low-power USB part; no boards in `config/`.
# Kalico differences
Checked against Kalico `main` `84a41057` (2026-09-16).
- **Adds chips:** STM32**F411** (96 MHz), STM32**F427** (F4x5 group — its 180 MHz default is shadowed by the earlier F4x5 168 MHz default, so it builds at **168 MHz** like the F429), and Artery **AT32F403** (via the F1 path, with USB).
- **N32G45x runs at 128 MHz even with USB** (Klipper drops to 96 MHz).
- Drops the F103x6 32 KB flash default (an F103x6 build assumes 64 KB), and limits the 64 KiB bootloader offset to the F103.
- **Runs the H750 at 400 MHz** (Klipper: 480).
- **G0 USB clocking is identical** to Klipper (PLLQ → USB), so the crystal gotcha below applies to both.
- The CAN / FDCAN / USB-CAN bridge rules match Klipper.
# Gotchas
1. **G0B1 USB needs a crystal under Klipper/Kalico.** The silicon has HSI48 + CRS for crystal-less USB, but `src/stm32/stm32g0.c` sets `USBSEL=2` (PLLQCLK) and builds the PLL from HSE — or from the 16 MHz HSI (about ±1%) if "Internal clock" is selected. USB full-speed needs ±0.25%. Every G0B1 board config in Klipper either names an 8 MHz crystal or relies on the default, which is also an 8 MHz crystal; none uses "Internal clock". Fit the HSE, or patch the firmware to use HSI48 + CRS. ([[STM32G0B1CBT6 LQFP-48 Layout Playbook]] was corrected to match on 2026-09-23.)
2. **F042/F072 are crystal-less only if you pick "Internal clock".** With a crystal selected, Klipper builds the 48 MHz from the PLL instead of HSI48.
3. **Klipper under-clocks some parts:** F429 at 168 (rated 180), H723 at 520 (rated 550), H743 at 400 (rev V rated 480).
4. **No USB-CAN bridge on any F1-path part** (F103, N32G45x, AT32F403 in Kalico): USB and CAN can't run together there.
5. **F765 has 3× bxCAN that Klipper doesn't use.**
6. **G0B0 and G070/G071 have no CAN at all**, and G070/G071 also have no USB. Don't pick them by family name alone.
7. **G431's 32 KB RAM** is lower than G0B1's 144 KB, even though the CPU is much faster.
8. **FDCAN runs as classic CAN.** Klipper doesn't use CAN-FD frames, so FDCAN vs bxCAN is about which peripheral is there, not bus speed.
# Decisions
| Use case | Pick | vs G0B1 |
|---|---|---|
| CAN toolhead, new design | **G0B1** | baseline |
| Toolhead / aux board that needs real CPU headroom | **G474** | same features, G431-class CPU (~3.3× on the G431 benchmark), no USB crystal needed; costs more, bigger package |
| Mainboard, ≤8 drivers, cost-driven | **G0B1** (Manta-style) | baseline; watch step rate at high microstepping |
| Mainboard, performance | **H723** | 6.7–10.9× step rate, bridge-capable |
| Smallest possible CAN node | F042 → see [[Klipper Compatible MCU Comparison]] | 4×4 mm, but 32 KB flash / 6 KB RAM |
| USB-only aux MCU, cheapest | G0B0 or G0B1 | G0B1 costs little more and keeps the CAN option |
| Don't design in | F031, F070, F103, F207, F401, F765, G070, G071, H750, L412, N32G45x | each loses to G0B1 or H723 on CAN, RAM, bridge support or Klipper support |
# TODO
- ~~Resolve the G0B1 crystal question in [[STM32G0B1CBT6 LQFP-48 Layout Playbook]]~~ (done 2026-09-23)
- ==Add LCSC price / stock for the parts still in play: G0B1CBT6, G474 (CEU6/RET6), H723VGT6, F446RET6, F072CBT6==
- ~~Correct the F042 USB/CAN buffer claim in [[Klipper Compatible MCU Comparison]]~~ (done 2026-09-23)
- ==Confirm Katapult support per family (G4 and L4 in particular)==
- ==Confirm N32G452 CAN count from the Nations datasheet==
- ==Find when F031, F072 and the individual F4 variants landed (not named in release notes)==
# References
## Klipper / Kalico source
- [`src/stm32/Kconfig`](https://github.com/Klipper3d/klipper/blob/master/src/stm32/Kconfig) — chip list, clocks, flash/RAM, USB/CAN capability, bootloader offsets
- [`src/stm32/Makefile`](https://github.com/Klipper3d/klipper/blob/master/src/stm32/Makefile) — per-family drivers (timer, ADC, I2C, serial, usbfs vs usbotg, can vs fdcan)
- [`src/stm32/stm32g0.c`](https://github.com/Klipper3d/klipper/blob/master/src/stm32/stm32g0.c) — G0 PLL / USB clock
- [`src/stm32/stm32g4.c`](https://github.com/Klipper3d/klipper/blob/master/src/stm32/stm32g4.c) · [`stm32h7.c`](https://github.com/Klipper3d/klipper/blob/master/src/stm32/stm32h7.c) · [`stm32l4.c`](https://github.com/Klipper3d/klipper/blob/master/src/stm32/stm32l4.c) · [`stm32f0.c`](https://github.com/Klipper3d/klipper/blob/master/src/stm32/stm32f0.c) — HSI48 + CRS paths
- [Klipper Features — step benchmarks](https://www.klipper3d.org/Features.html) · [Benchmarks](https://www.klipper3d.org/Benchmarks.html) · [Releases](https://www.klipper3d.org/Releases.html)
- [Klipper `config/`](https://github.com/Klipper3d/klipper/tree/master/config) — board → chip mapping
- [Kalico `src/stm32/Kconfig`](https://github.com/KalicoCrew/kalico/blob/main/src/stm32/Kconfig)
## Silicon
- [STM32G0B1CB](https://www.st.com/en/microcontrollers-microprocessors/stm32g0b1cb.html) · [STM32G0B0RE](https://www.st.com/en/microcontrollers-microprocessors/stm32g0b0re.html) · [STM32G071RB](https://www.st.com/en/microcontrollers-microprocessors/stm32g071rb.html)
- [STM32G431CB](https://www.st.com/en/microcontrollers-microprocessors/stm32g431cb.html) · [STM32G474RE](https://www.st.com/en/microcontrollers-microprocessors/stm32g474re.html)
- [STM32H723/733](https://www.st.com/en/microcontrollers-microprocessors/stm32h723-733.html) · [How to reach 480 MHz on STM32H7 (rev Y vs rev V)](https://community.st.com/t5/stm32-mcus/how-to-reach-480mhz-for-stm32h7xx-mcus/ta-p/49800)
- [STM32F765VI](https://www.st.com/en/microcontrollers-microprocessors/stm32f765vi.html) · [STM32L412KB](https://www.st.com/en/microcontrollers-microprocessors/stm32l412kb.html)
- [N32G455 datasheet](https://unirec.ru/upload/datasheets/EN_DS_N32G455%20Series%20Datasheet%20V2.pdf) · [N32G452 datasheet](https://en.sekorm.com/doc/3691828.html)
## Related notes
- [[Klipper Supported Microcontrollers]]
- [[STM32F103CBT6 vs STM32G0B1CBT6]] — part-level head-to-head with LCSC pricing and full pinout
- [[Klipper Compatible MCU Comparison]]
- [[STM32G0B1CBT6 LQFP-48 Layout Playbook]]
- [[JLCPCB Design Notes]]
- [[Kalico General Setup]]
# Changelog
## 2026-09-23
- Note created: Klipper master `ce7002be` Kconfig, Makefile and clock code read per chip; Kalico `84a41057` diffed; silicon specs from ST / Nations product pages; step benchmarks from Klipper docs
- Independent fact-check pass: corrected F031 and F207 silicon ranges, F0x2 USB/CAN buffer (1 KB, concurrent), G0B1 CAN pin list, F1 bootloader offsets, F429 RAM wording, SKR 2 / SKR 3 board variants, Kalico F427 clock and N32 differences; marked G474 CPU figure as extrapolated from the G431
- Resolved the G0B1 crystal and F042 USB/CAN buffer flags after correcting [[STM32G0B1CBT6 LQFP-48 Layout Playbook]] and [[Klipper Compatible MCU Comparison]]; quoted the F042 datasheet on the buffer split
- Linked the new [[STM32F103CBT6 vs STM32G0B1CBT6]] companion note