Elecrow CrowPanel Advance 7.0 (ESP32-S3)

7" 800x480 HMI touchscreen on an ESP32-S3-WROOM-1 N16R8, with a swappable radio module socket, RTC, mic and speaker output - the board we reviewed hands-on with the ESP32-H2, C6, nRF24 and Meshtastic modules.

USB-C
Elecrow CrowPanel Advance 7.0 (ESP32-S3) board
ESP32-S3
MCU
240MHz
clock
16MB
flash
512KB
SRAM
32· Two 12-bit, 20 Channels ADC
GPIO
BLE 5.0+ WiFi
radio
On this page

Pinout

32 pins
View:
Elecrow CrowPanel Advance 7.0 (ESP32-S3) pinout diagram
PinGPIOLabelsStatusCapabilitiesNotes
10IO0BOOTstrapping-BOOT button - hold at power-up for download mode
22IO2MIC_WSsafe-I2S microphone word select - also routed to the wireless module socket
33IO3LCD_Rstrapping-Internal - RGB panel data (V1.3+ mapping)
44IO4I2S_SDINSD_MISOsafespiFunction-switched - speaker I2S data or microSD MISO, selected by S0/S1; also on the module socket
55IO5I2S_BCLKSD_CLKsafespiFunction-switched - speaker I2S bit clock or microSD clock, selected by S0/S1; also on the module socket
66IO6I2S_LRCLKSD_MOSIsafespiFunction-switched - speaker I2S word clock or microSD MOSI, selected by S0/S1; also on the module socket
77IO7LCD_Rsafe-Internal - RGB panel data
88IO8BUZZERsafe-Passive buzzer on V1.0 (moved behind the STC8 helper on V1.2+); also routed to the module socket
99IO9LCD_Gstrapping-Internal - RGB panel data
1010IO10LCD_Gstrapping-Internal - RGB panel data
1111IO11LCD_Gstrapping-Internal - RGB panel data
1212IO12LCD_Gstrapping-Internal - RGB panel data
1313IO13LCD_Gstrapping-Internal - RGB panel data
1414IO14LCD_Gstrapping-Internal - RGB panel data
1515IO15SDAsafei2cI2C-OUT port - shared with GT911 touch, PCF8563 RTC (0x51) and the STC8 backlight controller (0x30 on V1.2+); add devices, don't repurpose
1616IO16SCLsafei2cI2C-OUT port - same shared bus as IO15
1717IO17LCD_Rsafe-Internal - RGB panel data
1818IO18LCD_Rsafe-Internal - RGB panel data
1919IO19UART1_RXMIC_CLKuartuartFunction-switched - UART1-OUT port or I2S microphone clock; also on the module socket
2020IO20UART1_TXMIC_DATAuartuartFunction-switched - UART1-OUT port or I2S microphone data; also on the module socket
2121IO21LCD_Bsafe-Internal - RGB panel data
2238IO38LCD_Bstrapping-Internal - RGB panel data
2339IO39LCD_PCLKstrapping-Internal - RGB panel pixel clock (20MHz, V1.3+ mapping)
2440IO40LCD_HSYNCstrapping-Internal - RGB panel horizontal sync
2541IO41LCD_VSYNCstrapping-Internal - RGB panel vertical sync
2642IO42LCD_DEstrapping-Internal - RGB panel data enable
2743IO43TXD0strappinguartUART0 - CH340K USB-C flashing/logs, also on the UART0-OUT and UART0-IN ports
2844IO44RXD0strappinguartUART0 - CH340K USB-C flashing/logs, also on the UART0-OUT and UART0-IN ports
2945IO45LCD_Bstrapping-Internal - RGB panel data
3046IO46LCD_Rstrapping-Internal - RGB panel data
3147IO47LCD_Bstrapping-Internal - RGB panel data
3248IO48LCD_Bstrapping-Internal - RGB panel data

Start with these

11 pins with no boot or system involvement
IO2MIC_WSIO4I2S_SDINIO5I2S_BCLKIO6I2S_LRCLKIO7LCD_RIO8BUZZERIO15SDAIO16SCLIO17LCD_RIO18LCD_RIO21LCD_B

Freely assignable - no strapping, flash, USB or JTAG duties. Ideal first picks for buttons, sensors and LEDs.

Fine - with a little care

sampled at boot or shared with debug/serial
PinLabelWhat to knowRole
IO0GPIO0Must be pulled high (default) or low (to enter UART download mode) at reset. Using it for other functions can interfere with boot mode configuration.Strapping
IO3GPIO3Sampled at reset to select JTAG interface (USB Serial/JTAG controller vs. external pins). Improper use can disable external JTAG or alter debug interface.Strapping
IO39MTCK (GPIO39)Default JTAG debugging TCK pin. If JTAG is needed, this pin must be free; it may also be used internally for PSRAM chip select on certain modules, so avoid repurposing it.Other
IO40MTDO (GPIO40)Default JTAG TDO output for debugging. Using it as GPIO will interfere with JTAG debugging functionality.Other
IO41MTDI (GPIO41)Default JTAG TDI input for debugging. Should be reserved for JTAG or left unused if JTAG is to remain available.Other
IO42MTMS (GPIO42)Default JTAG TMS signal for debugging. Using this pin for other purposes will disable the JTAG interface (unless JTAG is rerouted to USB).Other
IO43U0TXD (GPIO43)Used for bootloader output and UART console logs. If repurposed, you will lose the default serial output (and programming via UART0).Other
IO44U0RXD (GPIO44)Used for bootloader input (download mode via serial). If repurposed, you cannot use the default UART0 download mode for programming the chip.Other
IO45GPIO45Determines flash/PSRAM power voltage (3.3 V vs 1.8 V) at boot. Must match hardware configuration; using as GPIO can upset flash supply setting.Strapping
IO46GPIO46Must be at a defined level during reset (with GPIO0) to select normal or download boot and UART/USB print mode. This pin is input-only (no output drive), so it should be left for its intended strapping function.Strapping

Only if you know the tricks

wired to flash or USB - expect a fight
PinLabelWhat to knowRole
IO9FSPIHDConnected to external flash (data/hold signal) on most modules. Not recommended for use as GPIO, since it must remain dedicated to flash communication.Flash
IO10FSPICS0Used to select the external flash chip. It is required for flash access and cannot be repurposed without losing flash connectivityFlash
IO11FSPIDUsed as a data line for flash (and in-package PSRAM). It should not be used as GPIO when the flash/PSRAM is in use.Flash
IO12FSPICLKDrives the flash (and PSRAM) clock. This critical signal must be reserved for memory and not used as general GPIO.Flash
IO13FSPIQUsed as a data line for flash/PSRAM transfers. Not available for other uses when flash/PSRAM is connected.Flash
IO14FSPIWPConnected to external flash (data/write-protect signal). Not recommended as GPIO because it’s reserved for flash operations.Flash
IO19USB_D-By default connected to the on-chip USB Serial/JTAG controller. Using it as general GPIO without reconfiguring IO MUX will interfere with USB functionality.USB
IO20USB_D+By default connected to the on-chip USB Serial/JTAG controller. Using it as general GPIO without reconfiguring IO MUX will interfere with USB functionality.USB
IO38FSPIWPOn flash-equipped chips, this pin is tied to the flash’s WP# (or D3) line. It should be avoided for other use, as it’s needed for flash operations.Flash
IO47SPICLK_PUsed only on variants with Octal SPI interface (e.g. ESP32-S3R16V) as part of the differential clock pair. On such chips it operates at 1.8 V and is reserved for the high-speed octal SPI clock, not for general GPIO use.Flash
IO48SPICLK_NUsed only on variants with Octal SPI interface, as the negative leg of the differential clock&. On such chips it operates at 1.8 V; it should be avoided for GPIO to prevent conflicts with the octal flash/PSRAM clock.Flash
These are recommendations, not hard rules - with the right pull-ups, timing and boot-state awareness most pins can be made to work. When in doubt, start green.
Pinout notes All 32 pins on the Elecrow CrowPanel Advance 7.0 (ESP32-S3) are usable GPIO. Peripheral wiring is straightforward: I²C is mapped to SDA on GPIO15 and SCL on…

All 32 pins on the Elecrow CrowPanel Advance 7.0 (ESP32-S3) are usable GPIO.

Peripheral wiring is straightforward: I²C is mapped to SDA on GPIO15 and SCL on GPIO16.

10 of the exposed pins carry boot-time or system duties on the ESP32-S3 (IO0, IO3, IO39 and 7 more) - check the guidance above before wiring anything to them. IO2, IO4, IO5, IO6 and 7 more are free of any such role - the safest first picks.


Like every RGB-panel ESP32-S3 board, most pins drive the display: 16 data lines plus DE on IO42, HSYNC/VSYNC on IO40/IO41 and PCLK on IO39 (V1.3+ mapping). Your I/O comes through the ports on the back: UART0-OUT on IO43/IO44 (shared with the CH340K USB-C flashing path, and duplicated on the 5V-input UART0-IN port), UART1-OUT on IO19/IO20, and I2C-OUT on IO15/IO16.

The shared pins are the thing to internalize. IO4/IO5/IO6 carry speaker I2S or the microSD card; IO19/IO20 carry UART1 or the I2S microphone; and the wireless module socket wants IO2, IO4-IO6, IO8, IO15/IO16 and IO19/IO20 depending on the module. The S0/S1 function switches on the back select between MIC&SPK, wireless module and TF card modes - the valid combinations are printed next to the switches, and they differ slightly between hardware revisions.

The I2C bus on IO15/IO16 is shared with the GT911 touch controller, the PCF8563 RTC (address 0x51) and the STC8 helper MCU that handles the backlight (address 0x30 on V1.2+) - extend it, don't repurpose it. IO0 is the BOOT button, and IO8 drives the passive buzzer on V1.0 (later revisions moved it behind the STC8).

Getting started

flash your first firmware in ~2 minutes
Tool:
1
Connect over USB
Install your USB-serial driver (CH340 / CP210x) if no port appears. Not detected? Hold BOOT while plugging in.
2
Match & flash
Set the Tools options shown, then click Upload.
3
Verify it runs
The onboard LED on GPIO2 blinks - swap the pin if your board's LED differs.
Set these in Tools · leave everything else at default
Arduino IDE 2.x — Tools Copy
Board: "ESP32S3 Dev Module"
Flash Size: "16MB (128Mb)"
PSRAM: "OPI PSRAM"
Partition Scheme: "16M Flash (3MB APP / 9.9MB FATFS)" (default)
Upload Speed: "921600"
▸ every other Tools option — leave at default
Board: ESP32S3 Dev Module
Flash Size: 16MB (128Mb)
PSRAM: OPI PSRAM
Partition Scheme: 16M Flash (3MB APP / 9.9MB FATFS)
Upload Speed: 921600
Find it: Tools ▸ Board ▸ ESP32 Arduino ▸ ESP32S3 Dev Module
blink.ino Copy
// blink the onboard LED
void setup() {
  pinMode(2, OUTPUT);
}
void loop() {
  digitalWrite(2, HIGH); delay(500);
  digitalWrite(2, LOW);  delay(500);
}
board to selectesp32-s3-devkitc-1⧉ copy
platformio.ini Copy
[env:elecrow-crowpanel-advance-7-esp32-s3]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200
upload_speed = 921600
board_build.arduino.memory_type = qio_opi
build_flags = -DBOARD_HAS_PSRAM
Find it: PlatformIO Home ▸ Boards, search esp32-s3-devkitc-1 — or type it after board =.
board to selectesp32-s3-devkitc-1⧉ copy
device.yaml Copy
esp32:
  board: esp32-s3-devkitc-1
  variant: 
  framework:
    type: esp-idf
psram:
  mode: octal
  speed: 80MHz

# blink - GPIO2
output:
  - platform: gpio
    pin: 2
    id: led_out
light:
  - platform: binary
    name: "LED"
    output: led_out
Find it: search ESPHome's board list for esp32-s3-devkitc-1 (same ids as PlatformIO).
esptool doesn't pick board settings — a prebuilt .bin already has them baked in. This is just the raw flash command.
terminal Copy
esptool.py --chip esp32s3 --port /dev/ttyACM0 \
  --baud 921600 write_flash 0x0 firmware.bin
--port = your /dev/tty* (macOS/Linux) or COMx (Windows).

Good to know

board-specific quirks worth 60 seconds
Two DIP switches decide what your pins do illustration
Two DIP switches decide what your pins do
The S3 doesn't have enough free GPIO to run audio, microSD and a radio module simultaneously, so Elecrow multiplexes them: IO4 - IO6 and IO19 / IO20 are routed by the S0/S1 function switches on the back. The valid combinations (mic&speaker / wireless module / TF card) are printed right next to the switches. If the SD card, microphone or radio module "died" after you changed something else, check the switch…

The S3 doesn't have enough free GPIO to run audio, microSD and a radio module simultaneously, so Elecrow multiplexes them: IO4-IO6 and IO19/IO20 are routed by the S0/S1 function switches on the back. The valid combinations (mic&speaker / wireless module / TF card) are printed right next to the switches.

If the SD card, microphone or radio module "died" after you changed something else, check the switch position before debugging code - one of us lost an evening to this.

The radio modules are the point of the Advance series illustration
The radio modules are the point of the Advance series
The socket on the back takes Elecrow's plug-in radios: ESP32-H2 for Zigbee/Thread, ESP32-C6 for Wi-Fi 6, nRF2401 for cheap 2.4 GHz links, and a Meshtastic LoRa module. We tested all four in our review - integration is genuinely plug-in plus sample code, with the DIP switches set to WM mode. The Meshtastic module is the sleeper feature - it turns the panel into a mesh node with a 7" touchscreen, something the…

The socket on the back takes Elecrow's plug-in radios: ESP32-H2 for Zigbee/Thread, ESP32-C6 for Wi-Fi 6, nRF2401 for cheap 2.4 GHz links, and a Meshtastic LoRa module. We tested all four in our review - integration is genuinely plug-in plus sample code, with the DIP switches set to WM mode.

The Meshtastic module is the sleeper feature - it turns the panel into a mesh node with a 7" touchscreen, something the Meshtastic ecosystem otherwise lacks.

Backlight and housekeeping live on a helper MCU illustration
Backlight and housekeeping live on a helper MCU
On V1.2 and later, backlight brightness, touch reset and amplifier mute are handled by an STC8 microcontroller at I2C address 0x30 - you write one byte (0 = brightest, 245 = off) instead of driving a PWM pin. V1.0 boards used a PCA9557 GPIO expander instead. Firmware must poke the right mechanism for the revision, which is why Elecrow's examples come in per-version folders. A running firmware with a black…

On V1.2 and later, backlight brightness, touch reset and amplifier mute are handled by an STC8 microcontroller at I2C address 0x30 - you write one byte (0 = brightest, 245 = off) instead of driving a PWM pin. V1.0 boards used a PCA9557 GPIO expander instead. Firmware must poke the right mechanism for the revision, which is why Elecrow's examples come in per-version folders.

A running firmware with a black screen usually means the backlight write went to the wrong address for your revision - it's not a dead panel.

Specifications

ESP32-S3
Compute
MCU
ESP32-S3
Clock
240 MHz
SRAM · Flash
512 KB · 16MB · 8MB (OPI) PSRAM
Radio
Wi-Fi
802.11 b/g/n
Bluetooth
5.0 LE
Antenna
PCB
I/O
GPIO · ADC
32 · Two 12-bit, 20 Channels
UART · I²C · SPI
3 · 2 · 4
PWM
8 channels
Power
USB
USB-C
Serial
CH340K
Boot address
0x0
Display
Screen
IPS LCD · 7.0" · 800x480
Driver
-
Touch
GT911
Flashing
Upload · OTA
esptool_py · esp_ota
Flash · Boot mode
- · -
Sketch · Data
- · -
The Elecrow CrowPanel Advance 7.0 (ESP32-S3) uses esptool_py for firmware uploads, esp_ota for over-the-air (OTA) updates.

About this board

Inside sits the ESP32-S3 - a dual-core Xtensa with vector extensions suited to AI workloads.

At $34.90 it's on the expensive side for an ESP32-S3 board - most land around $30.

With 32 GPIO broken out, you get more pins to play with than most ESP32-S3 boards offer.

Around the module: 8MB (OPI) PSRAM, an IPS LCD 7.0" 800x480 display with touch, a microSD slot, a microphone (I2S MEMS), a speaker, a speaker connector (PH2.0-2P), an amplifier (NS4168), a PCF8563 RTC, a buzzer, battery charging (TP4059) via PH2.0-2P and Boot/Reset buttons.


The Elecrow CrowPanel Advance 7.0 is the board that defined the Advance formula, and one we know first-hand - we reviewed it in full, including the plug-in radio modules. It pairs a 7-inch 800x480 IPS capacitive touchscreen with an ESP32-S3-WROOM-1 N16R8 (dual-core LX7 at 240 MHz, 16 MB flash, 8 MB octal PSRAM), which is enough to run reasonably fluid LVGL interfaces at this resolution - just don't expect miracles when animations get heavy.


What separates it from the sea of generic ESP32 display boards is the housekeeping around the screen: a PCF8563 RTC with coin-cell backup, an I2S microphone and NS4168-amplified speaker output, a passive buzzer, battery connector with TP4059 charging, and the swappable wireless module socket. In our review we plugged in the ESP32-H2 (Zigbee/Thread), ESP32-C6 (Wi-Fi 6), nRF2401 and Meshtastic LoRa modules - all worked with Elecrow's sample code, and the Meshtastic option in particular turns the panel into a ready-made mesh node with a big screen.


The catch you should understand before buying: the S3 doesn't have enough pins for all of this at once, so two DIP switches on the back multiplex the I2S audio, microSD and wireless module functions onto the same GPIO. Mic + speaker, radio module, or TF card - pick the combination the switch table allows, not all three.


Elecrow has revved this board through several hardware versions (V1.0 to V1.5) with real behavioral differences - the backlight moved from a GPIO expander to an STC8 helper MCU on I2C, and the ESPHome examples are split by revision. It's a mature, well-documented HMI at a fair price; our review unit was a V1.0 and the experience out of the box was genuinely good. If you need more headroom than the S3 can give, its successor is the CrowPanel Advance ESP32-P4 line.

  • 7" 800x480 IPS panel with 178-degree viewing angles and GT911 capacitive multi-touch, driven over a 16-bit RGB parallel bus
  • ESP32-S3-WROOM-1 N16R8 module - 16 MB flash, 8 MB octal PSRAM
  • Swappable wireless module socket - optional ESP32-H2 (Zigbee/Thread), ESP32-C6 (Wi-Fi 6), nRF2401 and Meshtastic LoRa modules (all four tested in our review)
  • PCF8563 RTC (I2C 0x51) with CR1220 coin-cell backup for timekeeping through power loss
  • I2S MEMS microphone plus NS4168-amplified speaker output (PH2.0 connector) and a passive buzzer
  • S0/S1 function switches multiplex mic/speaker, wireless module and microSD onto the shared GPIO
  • Crowtail-style UART0, UART1 and I2C ports on HY2.0-4P connectors
  • PH2.0 battery connector with TP4059 charging; UART0-IN port doubles as a 5V power input
  • STC8 helper MCU (I2C 0x30 on V1.2+) controls backlight brightness, touch reset and amplifier mute
  • USB-C flashing and logs via CH340K; Boot and Reset buttons
  • Multiple hardware revisions (V1.0-V1.5) with per-revision ESPHome examples

FAQ

6 common questions
Does the CrowPanel Advance 7.0 work with ESPHome?
Yes, and Elecrow maintains official example configs - but they are split by hardware revision, and picking the wrong one gives you a dark screen or dead touch. The display is a `rpi_dpi_rgb` panel, I2C runs on IO15/IO16, and on V1.2+ the backlight is set by writing a single byte to the STC8 helper at I2C address 0x30 (0 is full brightness, 245 is off - the scale is inverted). Check the version printed on the board silk before copying a config.
Which hardware revision will I get, and does it matter?
New stock ships the latest revision (V1.3 and later), but plenty of V1.0/V1.2 units exist - our review unit was a V1.0. It matters for software - V1.0 controlled the backlight through a PCA9557 GPIO expander, V1.2+ through an STC8 microcontroller at I2C 0x30, and the buzzer and touch-reset wiring moved too. The functionality is the same; the configs are not interchangeable.
Can I use the microphone, speaker, SD card and a radio module at the same time?
No - this is the board's main compromise. The S0/S1 DIP switches on the back multiplex IO4-IO6 and IO19/IO20 between mic+speaker, the wireless module and the TF card, and only the printed combinations are valid. If audio or SD mysteriously stopped working, the switches are the first thing to check.
How does it compare to the non-Advance CrowPanel 7.0?
Same screen size, much better platform. The Advance adds the ESP32-S3 (vs the original's ESP32), more PSRAM for LVGL, the RTC with coin-cell backup, the mic/speaker audio path, battery charging and the wireless module socket. We reviewed both, and the Advance's brightness and viewing angles were visibly better out of the box.
Does the Meshtastic module really work with it?
Yes - we tested it in our review and it behaved like a proper Meshtastic node with a 7-inch UI. Be aware Elecrow's Meshtastic firmware targets specific hardware revisions (V1.0 era), so check the wiki's Meshtastic section against your board version before ordering the LoRa module specifically for this.
How do I flash it?
Over the USB-C port, which goes through a CH340K to UART0 (IO43/IO44) - Arduino IDE, PlatformIO, ESP-IDF, MicroPython and ESPHome all work. Hold BOOT while tapping RESET if the auto-download circuit doesn't trigger. The UART0-IN connector carries the same UART plus a 5V input, which is handy for permanently installed panels.

Where to buy

prices are typical street prices
Elecrow CrowPanel Advance 7.0 (ESP32-S3)
Elecrow CrowPanel Advance 7.0 (ESP32-S3)
$34.90per unit, typical

Resources

Similar boards