On this page

MCU Selection and Development Ecosystem

Why Selection is Necessary

You've learned about components and circuit analysis, but the first step in actual development is: Which chip to choose?

Wrong choice → Insufficient performance / Too expensive / Out of stock / Poor ecosystem → Project failure


Mainstream MCU Families

STM32 (STMicroelectronics) — The King of Industrial/General Purpose

Product Line (by Core):
  STM32F0/F1: Cortex-M0/M3, Entry-level (48~72MHz)
  STM32F4:     Cortex-M4 + FPU + DSP, Performance (84~180MHz)
  STM32F7:     Cortex-M7, High Performance (216MHz+)
  STM32G0/G4: Cortex-M0+/M4, Mainstream Low Power
  STM32H5/H7: Cortex-M33/M7, Flagship (250MHz+)
  STM32L0/L4/L5: Ultra-Low Power
  STM32WB/WL: Wireless (BLE/LoRa)
  STM32MP1:   Cortex-A7 + M4, Linux + RTOS Dual-Core

Naming: STM32F407VGT6
      F=Series  407=Model  V=Package (100pin)  G=Flash (1MB)  T=LQFP  6=Temp Grade

Ecosystem:
  Tools: STM32CubeMX (Pin config + Clock tree + Code generation)
   IDE: STM32CubeIDE (Free), Keil, IAR
   HAL/LL Libraries: Official drivers
   OpenOCD + ST-Link Debugging

ESP32 (Espressif) — The Cost-Effective King of WiFi/BLE

Family:
  ESP32 (Xtensa LX6): Dual-core 240MHz, WiFi 4 + BLE 4.2
  ESP32-S3: Single-core Xtensa LX7, WiFi 4 + BLE 5, AI Acceleration
  ESP32-C3: Single-core RISC-V, WiFi 4 + BLE 5, Low Power
  ESP32-C6: RISC-V, WiFi 6 + BLE 5.3 + Thread/Zigbee
  ESP32-S2: Single-core, WiFi only (No BLE), USB OTG

Features:
  ✓ Integrated WiFi + BLE → Top choice for IoT
  ✓ Low cost (ESP32-C3 module ~¥8)
  ✓ Dual ecosystem: Arduino / ESP-IDF
  ✗ Non-linear ADC (Don't use for precision measurement)
  ✗ Power consumption not as low as nRF
  ✗ Fewer pins (especially ESP32-C3, limited GPIO)

When to choose ESP:
  - Need WiFi or BLE
  - Low-cost IoT
  - Rapid prototyping (Arduino ecosystem)
  - Smart home / Sensor nodes

nRF52/nRF53 (Nordic) — The Benchmark for Low-Power Wireless

Family:
  nRF52832: Cortex-M4F, BLE 5.0 (Classic)
  nRF52840: Cortex-M4F, BLE 5.0 + Thread/Zigbee + USB
  nRF52833: Reduced version of 52840 (No USB, Smaller Flash)
  nRF5340: Dual-core M33 (app+network), BLE 5.4 + Thread + LE Audio
  nRF52810: Entry-level BLE

Features:
  ✓ Extremely low power (μA level in BLE connection)
  ✓ Excellent RF performance
  ✓ Native Zephyr RTOS support
  ✗ Expensive (2-3x more than ESP32)
  ✗ No WiFi (Only BLE/Thread/Zigbee)
  ✗ Steep learning curve (Zephyr/nRF Connect SDK)

When to choose nRF:
  - Battery-powered BLE devices (Running for months~years)
  - Need Thread/Zigbee + BLE
  - Strict power requirements
  - Production-grade (Not just prototypes)

RP2040 (Raspberry Pi) — The Dark Horse with Dual-Core PIO

Specs:
  Dual-core Cortex-M0+ @133MHz
  264KB SRAM (Huge!)
  No built-in Flash (External QSPI, max 16MB)
  PIO (Programmable IO): 8 state machines, can simulate any protocol!
  ~$1 Retail Price

Features:
  ✓ Extremely cheap
  ✓ PIO is super flexible (VGA output / DVI / Custom protocols)
  ✓ Excellent documentation and community
  ✓ Large SRAM
  ✗ No WiFi/BLE (Needs external chip)
  ✗ No built-in Flash (Increases BOM)
  ✗ M0+ performance is average
  ✗ No DAC, Average ADC

When to choose RP2040:
  - Need I/O flexibility (PIO simulates various protocols)
  - Low cost for mass production
  - Education/Teaching
  - Integration with Raspberry Pi ecosystem

ATmega / ATtiny (Microchip) — The Soul of Arduino

ATmega328P: Heart of Arduino Uno, 8bit AVR @16MHz
ATmega32U4: With USB, Arduino Leonardo/Micro
ATtiny85:  8pin, Extremely small projects

Features:
  ✓ Arduino ecosystem (Countless libraries and tutorials)
  ✓ 5V tolerant (A breath of fresh air in the 3.3V era)
  ✓ Simple, zero threshold to start
  ✗ Very weak (8bit, 16MHz, 2KB RAM)
  ✗ Expensive (For the performance provided)

Current Positioning: Extremely simple projects / 5V systems / Teaching
Actual Projects: Mostly replaced by ESP32/STM32/RP2040

Selection Decision Tree

MCU Selection Decision Tree: Step-by-step filtering based on requirements Need WiFi? Yes ESP32 (Choose C3/S3 as needed) No Need BLE + Ultra-low Power? Yes nRF52840 No High Performance / Rich Peripherals? Yes STM32F4 / H7 No Ultra-low Cost + Flexible I/O? Yes RP2040 No Extremely Simple / 5V / Teaching? Yes ATmega328P (Arduino) No Refer to specific project requirements The decision order is the priority: Check WiFi first, then BLE low power, then performance and peripherals, then cost and I/O, finally check if simplicity and ease of use are desired—filter step-by-step from top to bottom, stop when matched.
ChipDev BoardPriceDebugger
STM32F4STM32F407G-DISC1~$25On-board ST-Link
STM32F1Blue Pill (STM32F103C8T6)~$2Requires ST-Link
STM32G0Nucleo-G0B1RE~$15On-board ST-Link
ESP32ESP32-DevKitC / NodeMCU~$5Built-in USB-UART
ESP32-C3ESP32-C3-DevKitM-1~$8Built-in USB-JTAG
nRF52840nRF52840-DK~$40On-board J-Link
nRF52840Seeed XIAO nRF52840~$10Built-in
RP2040Raspberry Pi Pico~$4Requires debugger or USB drag-and-drop
ATmegaArduino Uno R3~$25Built-in bootloader

Toolchain Quick Reference

ChipIDEDebugFlash
STM32STM32CubeIDE / PlatformIOST-Link + OpenOCDST-Link / DFU
ESP32PlatformIO / Arduino / ESP-IDFBuilt-in USB-JTAG (C3/S3)USB UART
nRF52VS Code + nRF ConnectJ-Link / DAP-LinkJ-Link / DFU
RP2040VS Code + Pico SDKPicoprobe / USB Drag-and-DropUSB Drag-and-Drop
ATmegaArduino IDE / PlatformIORequires DebuggerUSB Bootloader

Recommended Learning Path: Three starting points, respective learning paths Complete Beginner Arduino Uno Fastest results ESP32 Add WiFi/BLE STM32 Understand low-level Has Programming Basics ESP32 + PlatformIO STM32 HAL Understand peripheral registers Pursue Low-Level Understanding STM32 Blue Pill Bare-metal register programming Write your own linker script The three paths converge: Beginners build confidence with Arduino, those with programming basics can start directly with ESP32, only those pursuing low-level understanding need to go through bare-metal register programming and linker scripts.

Keywords: STM32, ESP32, nRF52, RP2040, ATmega, Arduino, Cortex-M, RISC-V, Selection, Development Board