Opens in a new tab

Waveshare ESP32-P4-ETH Pinout

Waveshare ESP32-P4-ETH is a small board with Espressif’s most powerful chip, the ESP32-P4 (2 RISC-V cores up to 400 MHz, 32 MB PSRAM), and Ethernet. It has MIPI connectors for a display and a camera, USB 2.0 High Speed, an audio codec with a microphone and a microSD slot. The 2 × 20 header follows the Raspberry Pi Pico layout: power and GND are in the same places, but the GPIO numbers differ.

The ESP32-P4 has no Wi-Fi or Bluetooth – networking here is Ethernet only. The PoE-ETH version also adds Power over Ethernet.

Specifications

  • ESP32-P4NRW32: 2× RISC-V up to 400 MHz (360 MHz default) + low-power core, 32 MB PSRAM, 32 MB flash
  • 100 Mbit Ethernet (IP101GRI), no Wi-Fi or Bluetooth
  • 27 GPIO on the header: 9 analog inputs, 11 touch inputs, I2C, SPI, native USB (GPIO24/25)
  • MIPI-DSI and MIPI-CSI (22 pins), USB 2.0 HS OTG, ES8311 audio codec with amplifier, microSD
  • USB-C via a CH343P converter (UART0 and uploading)
  • 78 × 21 mm

The pinout applies to revision Rev1.1 and is based on the Waveshare schematic. In Arduino, choose the “Waveshare ESP32-P4-POE-ETH” profile (same board) – I2C is on GPIO7/8, SPI SCK 27, MOSI 32, MISO 33, SS 46.

The board has three USB paths: USB-C goes only to the CH343P converter, native USB Serial/JTAG is on the header (GPIO24/25) and USB 2.0 High Speed is on the four-pin “USB” connector.

Pinout and pin table

Hover over a pin in the diagram or a table row; use the filter to highlight a bus. You can download the pinout as PNG or SVG.

Waveshare ESP32-P4-ETH – pinoutWaveshare ESP32-P4-ETH – pinoutchiptron.eu · CC BY 4.0DISPLAYUSBCAMERAESP32-P4PoE 1 GPIO54 ADC2_CH5 2 GPIO19 ADC1_CH3 3 GND 4 GPIO18 ADC1_CH2 5 GPIO17 ADC1_CH1 6 GPIO16 ADC1_CH0 7 GPIO15 T14 8 GND 9 GPIO14 T13 10 GPIO6 T5 11 GPIO5 T4 12 GPIO4 T3 13 GND 14 GPIO3 T2 15 GPIO2 T1 16 GPIO8 SCL T7 17 GPIO7 SDA T6 18 GND 19 GPIO24 USB D− 20 GPIO25 USB D+ 40 VBUS ↔ 5 V from USB-C (through an ideal diode) or from the PoE module 39 VSYS ↔ Board power 5 V (after the Schottky diode) 38 GND 37 3V3_EN ← 3.3 V supply enable (logic 0 = off) 36 3V3 → 3.3 V output from the MP1658 switching regulator (up to 3 A) 35 GPIO20 ADC1_CH4 34 GPIO21 ADC1_CH5 33 GND 32 GPIO22 ADC1_CH6 31 GPIO23 ADC1_CH7 30 RUN ← ESP32-P4 reset (CHIP_PU) – logic 0 holds the chip in reset 29 GPIO26 28 GND 27 GPIO27 SCK 26 GPIO32 MOSI 25 GPIO33 MISO 24 GPIO46 SS 23 GND 22 GPIO47 21 GPIO48 GPIO I2C SPI ADC (analog) Touch Power Ground (GND) Control / reset
Download:PNGSVG
Pin table – Waveshare ESP32-P4-ETH
PinNameDirectionUARTI2CSPIADCTouchNote
1GPIO54input/outputADC2_CH5
2GPIO19input/outputADC1_CH3
3GND–
4GPIO18input/outputADC1_CH2
5GPIO17input/outputADC1_CH1
6GPIO16input/outputADC1_CH0
7GPIO15input/outputT14
8GND–
9GPIO14input/outputT13
10GPIO6input/outputT5
11GPIO5input/outputT4JTAG MTDO
12GPIO4input/outputT3JTAG MTMS
13GND–
14GPIO3input/outputT2JTAG MTDI
15GPIO2input/outputT1JTAG MTCK
16GPIO8input/outputSCLT7I2C SCL – shared with the codec and the DISPLAY and CAMERA connectors, 2.2 kΩ pull-up
17GPIO7input/outputSDAT6I2C SDA – shared with the ES8311 audio codec (0x18) and the DISPLAY and CAMERA connectors, 2.2 kΩ pull-up
18GND–
19GPIO24input/outputUSB Serial/JTAG D− (native USB is on the header, not on USB-C)
20GPIO25input/outputUSB Serial/JTAG D+
21GPIO48input/outputVDD_IO_5 power domain – works only after enabling the internal LDO (channel 4)
22GPIO47input/outputVDD_IO_5 power domain – works only after enabling the internal LDO (channel 4)
23GND–
24GPIO46input/outputSSSPI SS in Arduino. GPIO39–48 (VDD_IO_5) are powered by internal LDO channel 4 of the ESP32-P4, not 3.3 V – it is off after boot. Arduino turns it on automatically when the pin is used (3.3 V); in ESP-IDF, esp_ldo_acquire_channel(chan_id 4, 3300 mV).
25GPIO33input/outputMISO
26GPIO32input/outputMOSI
27GPIO27input/outputSCKSPI SCK in Arduino; second USB Full Speed D+.
28GND–
29GPIO26input/outputSecond USB Full Speed D− (PHY 2), otherwise GPIO.
30RUNinputESP32-P4 reset (CHIP_PU) – logic 0 holds the chip in reset
31GPIO23input/outputADC1_CH7
32GPIO22input/outputADC1_CH6
33GND–
34GPIO21input/outputADC1_CH5
35GPIO20input/outputADC1_CH4ADC1_CH4. On the Raspberry Pi Pico this position is ADC_VREF – Pico expansion boards may not account for that.
363V3output3.3 V output from the MP1658 switching regulator (up to 3 A)
373V3_ENinput3.3 V supply enable (logic 0 = off)
38GND–
39VSYSinput/outputBoard power 5 V (after the Schottky diode)
40VBUSinput/output5 V from USB-C (through an ideal diode) or from the PoE module

Pins used on the board

These chip pins are used by parts on the board and are not broken out:

PinFunction on the board
GPIO0, 1Krystal 32,768 kHz
GPIO9–13Audio kodek ES8311 (I2S): DSDIN 9, LRCK 10, ASDOUT 11, SCLK 12, MCLK 13
GPIO53Speaker amplifier enable (NS4150B)
GPIO28–31, 34, 35, 49–52Ethernet RMII (IP101GRI): CRS_DV 28, RXD0 29, RXD1 30, MDC 31, TXD0 34, TXD1 35, TX_EN 49, REF_CLK 50, reset PHY 51, MDIO 52
GPIO35BOOT button and auto-reset (also RMII TXD1, strapping pin)
GPIO3610 kΩ pull-up and test point TP5 (strapping pin)
GPIO37, 38UART0 to the CH343P converter (USB-C)
GPIO39–44Karta microSD: D0 39, D1 40, D2 41, D3 42, CLK 43, CMD 44
GPIO45microSD card power (logic 0 = on)

What to watch out for

  • The GPIO are not 5V tolerant.
  • GPIO46–48 are powered by the chip’s internal LDO – they only work once it is turned on (Arduino does this automatically).
  • I2C (GPIO7/8) is shared by the audio codec and both MIPI connectors.
  • The Pico’s ADC_VREF position carries GPIO20 – Pico add-on boards may not account for that.
  • Espressif is replacing the ESP32-P4NRW32 chip (revision v1.x) with the P4NRW32X – newer units may have a different chip and require a newer arduino-esp32.

ESP32-P4 on chiptron.eu/

Projects and guides on chiptron.eu/:

More pinouts

See all pinouts on the Pinouts page.

Related Articles