Choose by package, Flash, GPIO, and power; verify against the original page and your own measurements.
CPU / main boardsesp32selectionpackageflashgpiopower
Official path: https://so.szlcsc.com/global.html
01 Overview
This is a selection reference for ESP32-family MCUs, not a full datasheet for any specific part. Start by filtering on package and pin count so you don't end up with a board that lacks pins or has the wrong footprint.
Flash and PSRAM size directly affect how you partition OTA updates, whether you can enable large buffers, and whether memory-hungry algorithms can run. Decide how much firmware you need to store and whether you want dual-bank OTA before picking a size.
For low-power designs, don't rely on nominal current numbers alone. Check deep sleep current, wake sources (timer, GPIO, touch, etc.), and whether RTC memory is sufficient. Also account for wake-up time in your power budget.
Audit peripherals early: number of ADC channels, DAC outputs, touch pins, USB port type (some parts only have UART), and available SPI/I2C/UART. If you run short, either pick a different variant or add external chips.
The selection is only a starting point; always verify against the official datasheet and your own measurements. Electrical parameters vary with batch and temperature, so leave margin on critical specs.
02 Hardware
Package: Common QFN and module types with pin counts ranging from dozens to over a hundred. QFN suits custom boards; modules include antenna and RF matching, ideal for quick validation or teams without RF expertise.
Power: Typically 3.3V, but mind peak current draw (hundreds of mA during RF transmission). Follow the datasheet for supply ripple and decoupling capacitors—don't skimp.
Flash: Usually 4MB minimum, some variants include PSRAM (e.g., 8MB). Size affects OTA partitioning and buffering, so decide early.
GPIO: Limited count, and many pins have alternate functions (JTAG, ADC, touch). Check the pin mux table in the datasheet to avoid conflicts.
Peripherals: Common SPI, I2C, UART, ADC, DAC, touch, PWM, etc. Note ADC input range and accuracy, and whether you really need DAC.
Strapping pins: Some pins have boot/download strapping functions. Design external circuitry and power-up timing per the datasheet, or you may fail to download or boot.
Antenna (modules): Keep the antenna area clear of copper and traces; otherwise RF performance degrades. See the module hardware design guide for layout rules.
Thermal: Under heavy load the chip heats up; consider package and PCB layout for heat dissipation to avoid thermal throttling.
03 Software flow
After locking the specific part, set the correct target (e.g., esp32, esp32s3) and sdkconfig in ESP-IDF. Copy pin numbers from that part's datasheet, not from another series.
Prove the download path with the official hello_world example—verify toolchain, drivers, and basic board function—before adding peripheral drivers.
Configure peripherals according to your selection: ADC channels, USB port type (if any), PSRAM enable (in menuconfig), and Flash frequency/mode.
When writing drivers, verify each peripheral individually (e.g., blink an LED, read a sensor) before combining. Check for pin mux conflicts using the GPIO matrix or pin mapping.
For low power: configure deep sleep and wake sources (timer, GPIO, touch), measure actual current, and manage peripheral power (e.g., disable unused clocks).
Size OTA and buffers to Flash/PSRAM: partition table, dual-bank, buffer sizes—do not keep another module's defaults.
Before production, run stress and long-duration tests to catch memory leaks, Wi-Fi instability, and temperature effects.
04 Core points
Don't just count pins; watch for mux conflicts and strapping pins, or you'll end up with an unusable board.
Different series (e.g., ESP32 vs ESP32-S3) have different pin definitions and peripherals; don't copy code or schematics across series.
ADC calibration and accuracy vary with chip and temperature; calibrate or add external conditioning if you need precision.
PSRAM is not enabled by default; you must enable it in build config, and note it's slower than internal SRAM.
Module RF performance depends on antenna layout; follow the guidelines for keep-out and matching, or Wi-Fi range and throughput suffer.
Low-power designs require real measurements; datasheet values are nominal, and actual circuit and firmware affect current.