Skip to main content

EFZ-ESP32S3

The EFZ-ESP32S3 is the EmbeddedFun training board: an ESP32-S3 with every peripheral the course uses already on board.

Resources​

Design files​

RevisionSchematicNotes
V1EFZ-ESP32S3-V1-schematic.pdf (PDF, 9 sheets)See the Rev 1 errata

Zephyr board support​

  • Build target: efz_esp32s3/esp32s3/procpu (hardware model v2, vendor embeddedfun).

  • Board files: devicetree, pinctrl, Kconfig and defconfig in boards/embeddedfun/efz_esp32s3, with the board's Zephyr documentation page in doc/index.rst.

  • Get it: create a workspace from the fork, as in Environment Setup & West:

    west init -m https://github.com/huunghiaspkt/zephyr --mr main /your/workspace/path

Lessons​

The whole Zephyr RTOS course runs on this board; every hands-on page has an EFZ-ESP32S3 tab. Good places to start:

LessonOn this board
Environment Setup & WestInstall the tools, build, flash over USB-C and read the console
WS2812 RGB LEDThe on-board RGB LED on GPIO21, added with an overlay
SensorsThe on-board SHT30 temperature and humidity sensor on I2C
WiFi · WiFi ShellThe ESP32-S3 radio: connect and scan
BLE BasicsBluetooth LE from the ESP32-S3
Devicetree · Writing Overlays · Custom Board SupportHow this board is described to Zephyr
Write & Run Your First TestUnit tests with ztest and Twister

Examples​

Ready-to-build samples for this board live in samples/efz_samples of the Zephyr fork. Build any of them from your workspace folder:

west build -b efz_esp32s3/esp32s3/procpu zephyr/samples/efz_samples/02_basic/led_strip -p
west flash

Compatible​

  • Zephyr: the EmbeddedFun Zephyr fork (main), which is upstream Zephyr plus this board
  • Host OS: Linux, macOS (Apple Silicon) and Windows; the Environment Setup steps are tested on all three every week
  • Flashing and console: west flash over the USB-C cable (native USB Serial/JTAG); no separate programmer
  • Displays: 1.47" ST7789V3 172×320 SPI TFT on the display connector, with its overlay in the fork
  • Your own modules: 3.3 V parts on the I2C, UART and SPI headers; pins in Connections and IOs
  • Other boards: the course also runs on Espressif's ESP32-S3-DevKitC, with modules wired to it


Overview​

The EFZ-ESP32S3 puts an ESP32-S3 on a compact board together with the parts an embedded course needs: a temperature and humidity sensor, a 6-axis IMU, an RGB LED, a microphone, a speaker amplifier, a microSD slot, a display on the back, and headers for your own wiring. It is powered, flashed and debugged over a single USB-C cable.

Hardware​

ESP32-S3 features​

ESP32-S3 is a low-power MCU-based system on a chip (SoC) with integrated 2.4 GHz Wi-Fi and Bluetooth Low Energy. It has a high-performance dual-core Xtensa 32-bit LX7 microprocessor, a low-power coprocessor, a Wi-Fi baseband, a Bluetooth LE baseband, an RF module and numerous peripherals.

  • Dual-core 32-bit Xtensa LX7, up to 240 MHz, with vector instructions for AI acceleration
  • 512 KB SRAM, 384 KB ROM
  • Wi-Fi 802.11 b/g/n
  • Bluetooth LE 5.0 with long range, up to 2 Mbps

Digital interfaces: 45 programmable GPIOs · 4× SPI · 3× UART · 2× I2C · 2× I2S · LCD interface · DVP camera interface · RMT · pulse counter · LED PWM (8 channels) · full-speed USB OTG · USB Serial/JTAG · 2× MCPWM · SDIO host (2 slots) · GDMA (5 TX + 5 RX channels) · TWAI (CAN 2.0)

Analog interfaces: 2× 12-bit SAR ADC (up to 20 channels) · temperature sensor · 14 touch-sensing IOs

Timers: 4× 54-bit general-purpose timers · 52-bit system timer · 3× watchdog timers

Low power: power management unit with five power modes · ULP-RISC-V and ULP-FSM coprocessors

Security: secure boot · flash encryption · 4-Kbit OTP · AES, SHA, RSA, RNG, HMAC and digital-signature accelerators

On this board the chip has no in-package flash or PSRAM: code runs from an external 8 MB QSPI flash (EN25QH64A).

Board components​

FeatureDetail
MCUESP32-S3 (QFN56, no in-package flash or PSRAM) — dual-core Xtensa LX7 @ 240 MHz, 512 KB SRAM
Operating temp.–40 to 105 °C ambient (chip rating)
Flash8 MB external QSPI (EN25QH64A)
WirelessWi-Fi 802.11 b/g/n + Bluetooth LE 5.0, chip antenna
USBUSB-C, wired straight to the ESP32-S3's native USB — flashing and console
Power5 V USB → 1117-type 3.3 V LDO, red power LED
SensorsSHT30 temperature/humidity, MPU-6500 6-axis IMU, NTC thermistor input
AudioINMP441 I2S microphone, MAX98357A I2S class-D amp (speaker header)
StoragemicroSD, 4-bit SDIO with card-detect
User I/O1× WS2812B RGB LED, 2× red LEDs, 2× user buttons,BOOT and RESET buttons
DisplayRounded TFT on the back (SPI) — driver added per display module, via overlay
ExpansionTwo 7-pin headers; I2C, UART, NTC and speaker connectors

Supported features​

Generated from the board's devicetree: every node the EFZ-ESP32S3 enables, with its binding. The count shows how many nodes of that kind are enabled; the compatible links to its binding in the Zephyr docs.

TypeLocationDescriptionCompatible
ADCon-chipESP32 ADC×1espressif,esp32-adc
Bluetoothon-chipBluetooth HCI for Espressif ESP32×1espressif,esp32-bt-hci
CPUon-chipEspressif Xtensa LX7 CPU×2espressif,xtensa-lx7
Clock controlon-chipESP32 Clock (Power & Clock Controller Module) Module×1espressif,esp32-clock
Counteron-chipESP32 general-purpose timers×1espressif,esp32-timer
Cryptoon-chipEspressif ESP32 family AES Hardware Accelerator×1espressif,esp32-aes
Cryptoon-chipEspressif ESP32 SHA Hardware Accelerator×1espressif,esp32-sha
DMAon-chipESP32 GDMA (General Direct Memory Access)×1espressif,esp32-gdma
Entropyon-chipESP32 TRNG (True Random Number Generator)×1espressif,esp32-trng
Flashon-chipFlash node×1soc-nv-flash
Flash controlleron-chipESP32 flash controller×1espressif,esp32-flash-controller
GPIOon-chipESP32 GPIO controller×2espressif,esp32-gpio
I2Con-chipESP32 I2C×1espressif,esp32-i2c
I2Son-chipESP32 I2S×1espressif,esp32-i2s
Inputon-boardGroup of GPIO-bound input keys×1gpio-keys
Interrupt controlleron-chipESP32 Interrupt controller×1espressif,esp32-intc
LEDon-boardGroup of GPIO-controlled LEDs×1gpio-leds
Miscellaneouson-chipESP32 LCD-CAM controller×1espressif,esp32-lcd-cam
Pin controlon-chipESP32 pin controller×1espressif,esp32-pinctrl
SDon-boardZephyr SDMMC disk (microSD slot)×1zephyr,sdmmc-disk
SD host controlleron-chipESP32 SDHC controller×1espressif,esp32-sdhc
SD host controlleron-chipESP32 SDHC controller slot×1espressif,esp32-sdhc-slot
Sensoron-boardMPU-6000 motion tracking device (MPU-6500 on this board)×1invensense,mpu6050
Sensoron-boardSensirion Humidity SHT3x-DIS humidity and temperature sensor (SHT30 on this board)×1sensirion,sht3xd
Serial controlleron-chipESP32 UART×1espressif,esp32-uart
Serial controlleron-chipESP32 UART (USB Serial/JTAG console)×1espressif,esp32-usb-serial
Watchdogon-chipESP32 watchdog×1espressif,esp32-watchdog
Wi-Fion-chipESP32 SoC Wi-Fi×1espressif,esp32-wifi

Connections and IOs​

The back holds the display and labels every connector — handy when you're wiring something up with the board face down. Here it is without the display fitted, so you can see the display outline and its FPC pads:

Back of the EFZ-ESP32S3 without the display: silkscreen labels for the UART (3V3, GND, RXD, TXD), I2C (3V3, GND, SDA, SCL), NTC (ADC, GND) and speaker (OUT+, OUT−) connectors, the display outline and its FPC pads

The back, display not fitted

FunctionPartESP32-S3 pinsNotes
USBnative USB Serial/JTAGD− GPIO19, D+ GPIO20flashing + console
UART0box header P6TX GPIO43, RX GPIO44free for your own use
I2C (shared)SHT30 @ 0x44SDA GPIO17, SCL GPIO18also on box header P5
MPU-6500 @ 0x69same bus, INT → GPIO48
ADCNTC 10 kΩ B3950 (header P7)GPIO1 (ADC1_CH0)10 kΩ pull-up to 3V3
RGB LEDWS2812BGPIO21
LEDsLED1, LED2 (red)GPIO46, GPIO45active-high
ButtonsBOOT, RESETGPIO0, CHIP_PUBOOT is usable as a button
microSD4-bit SDIOCLK 9, CMD 10, D0 8, D1 7, D2 12, D3 11, CD 6
MicrophoneINMP441 (left channel)BCLK 2, WS 4, DOUT 3, EN 5
SpeakerMAX98357ABCLK 34, DATA 33, WS 35, SD 47SD low (10 kΩ pull-down) keeps the amp off
ButtonsBN1, BN2GPIO36, GPIO37active-low, 10 kΩ pull-up
TFTSPI display connectorSCL 40, SDA 41, CS 39, DC 38, RST 42, BLK 16shares header P4
Header P47-pin3V3, GPIO42, 41, 40, 39, 38, GND
Header P37-pin3V3, GPIO26, 16, 15, 14, 13, GNDsilkscreen differs — see errata
The TFT and header P4 share pins

GPIO38–42 go to both the TFT connector and header P4, and GPIO16 (backlight) is on header P3. With a display plugged in, don't use those header pins for anything else.

Strapping pins​

The ESP32-S3 samples four pins at reset and latches them until power-off; after that they're ordinary GPIOs. This board uses all four, safely:

PinControlsChip defaultOn this boardResult
GPIO0boot modeweak pull-up → 1BOOT button + 10 kΩ pull-upruns from flash; hold BOOT for download mode
GPIO46boot mode, ROM logweak pull-down → 0LED1 + 1 kΩ to GND0, as download mode requires
GPIO45VDD_SPI voltageweak pull-down → 0LED2 + 1 kΩ to GND0 → 3.3 V, which the EN25QH64A flash needs
GPIO3JTAG sourcefloatingINMP441 data outignored unless the STRAP_JTAG_SEL eFuse is burned (it isn't by default)
Never pull GPIO45 high at reset

GPIO45 = 1 at reset switches VDD_SPI to 1.8 V. The 3.3 V flash then can't be read and the board won't boot. If you hang anything on LED2's pin, keep it low (or high-impedance) during reset.

Source: ESP32-S3 datasheet, §3, Tables 3-1 to 3-5.

Which free pins are safe?​

Besides the strapping pins, the datasheet ranks GPIOs by how freely you can use them (§2.3.5). Here's how that plays out on this board:

PinsStatus on EFZ-ESP32S3
GPIO13, 14, 15, 26free on header P3 — use these first
GPIO16free on header P3 unless a TFT is fitted (it's the backlight)
GPIO38–42on header P4, shared with the TFT. GPIO39–42 are also the chip's pad-JTAG pins; that's fine, since JTAG debugging goes over USB on this board
GPIO43, 44UART0 on box header P6. The ROM prints its boot log here too
GPIO15, 16can also take an external 32 kHz crystal (XTAL_32K) — not fitted on Rev 1
GPIO26also SPICS1, the chip-select for an optional external PSRAM — none is fitted, so it's an ordinary GPIO here
GPIO27–32don't use — the QSPI flash bus (EN25QH64A)
GPIO33–37used by the speaker and BN1/BN2. They're only restricted on chips with octal flash/PSRAM, which this one doesn't have
ADC and Wi-Fi

Only ADC1 (GPIO1–10) works while Wi-Fi is on; ADC2 (GPIO11–20) is shared with the radio. The NTC input is on GPIO1 (ADC1_CH0), so temperature readings and Wi-Fi coexist.

Rev 1 errata​

Header P3 silkscreen

The silkscreen next to header P3 reads 3V3, GPIO16, 15, 14, 13, 12, GND. The schematic is correct: the pins are 3V3, GPIO26, 16, 15, 14, 13, GND. GPIO12 is microSD D2 and is not on the header.



References​