ESP32-P4: il chip senza radio per display, video e supervisori

ESP32-P4: il chip senza radio per display, video e supervisori

L’ESP32-P4 è il chip più potente che Espressif abbia mai fatto, ed è anche il più strano della famiglia: non ha nessuna radio. Niente Wi-Fi, niente Bluetooth. In compenso ha due core RISC-V a 400 MHz, fino a 32 MB di PSRAM nel package, interfacce MIPI per telecamere e display, un codificatore video H.264, un acceleratore grafico, USB 2.0 ad alta velocità, Ethernet e 55 GPIO. Quando serve la rete senza fili gli si affianca un ESP32-C6, che gli “presta” il Wi-Fi. Nei nostri progetti è la variante di riferimento dei supervisori: energia, irrigazione, lievitazione e birrificio. Cheap ne è un po’ intimorito: è il primo chip della famiglia che non riesce a chiamare “collega”.

In breve

Caratteristica ESP32-P4
Processore principale 2 core RISC-V a 32 bit, fino a 400 MHz, pipeline a 5 stadi, FPU, estensioni AI/DSP
Processore a basso consumo RISC-V a 32 bit, fino a 40 MHz
Memoria 768 KB di L2MEM, 128 KB di ROM, 32 KB di SRAM LP, cache L1 e L2
PSRAM 16 MB (ESP32-P4NRW16X) o 32 MB (ESP32-P4NRW32X) nel package
Flash sempre esterna, fino a 64 MB
Radio nessuna
Video MIPI-CSI e MIPI-DSI (2 lane da 1,5 Gbps), ISP, H.264 fino a 1080p a 30 fps, JPEG, PPA
USB USB 2.0 OTG high-speed (480 Mbit/s), USB OTG full-speed, USB Serial/JTAG
Rete cablata MAC Ethernet 10/100 Mbit/s (con PHY esterno)
GPIO 55, package QFN104 da 10 x 10 mm
Alimentazione da 3,0 a 3,6 V (tipica 3,3 V), più domini interni
Temperatura da -40 a +85 °C
Deep-sleep circa 12 µA

I valori vengono dal datasheet ufficiale di Espressif, versione 0.7. È ancora una versione pre-release, quindi preliminare, e descrive la revisione v3.x del chip: sul mercato circolano anche revisioni precedenti, con differenze descritte da Espressif in una guida dedicata. Prima di fidarsi di un numero conviene controllare quale revisione monta la propria scheda.

Dentro il chip

Lo schema a blocchi del P4 è affollato. Per leggerlo conviene dividerlo in quattro zone: il sistema ad alte prestazioni, il blocco multimediale, le periferiche e il sistema a basso consumo.

Schema a blocchi dell'ESP32-P4: due core RISC-V a 400 MHz, memorie e PSRAM, blocco multimediale con MIPI-CSI, MIPI-DSI, ISP, PPA, H.264 e JPEG, periferiche con USB high-speed ed Ethernet, sistema a basso consumo; nessuna radio
L’ESP32-P4: tanto calcolo, tanta grafica, nessuna radio.

Due core RISC-V a 400 MHz

Il processore principale ha due core RISC-V a 32 bit con pipeline a 5 stadi, unità in virgola mobile e predizione dei salti. Il datasheet indica 6,92 punti CoreMark per MHz con due core: a 400 MHz fanno circa 2.770 punti, più del doppio dei 1330 dell’ESP32-S3 e più di cinque volte i 497 dell’ESP32-C6. Come l’S3, ha istruzioni vettoriali a 128 bit per AI e DSP (otto registri a 128 bit, moltiplicazioni e somme su più dati alla volta) più istruzioni speciali per rendere più veloci i cicli; le usano le librerie di Espressif come ESP-DL.

Accanto c’è un core LP RISC-V fino a 40 MHz, con 32 KB di SRAM e 16 KB di ROM propri, che resta acceso nel deep-sleep e può svegliare i core principali. È la stessa idea del core LP del C6.

Memoria: tanta, e veloce

All’interno ci sono 768 KB di memoria L2 (L2MEM) a 200 MHz per programmi e dati, 128 KB di ROM e 8 KB di memoria “scratchpad” a 400 MHz per gli accessi più urgenti. Le cache sono su due livelli: 16 KB per le istruzioni e 64 KB per i dati al primo livello, da 128 a 512 KB al secondo.

La differenza vera la fa la PSRAM nel package, da 16 o 32 MB, collegata con un bus a 16 bit che lavora su entrambi i fronti del clock a 250 MHz. Il datasheet ne calcola la banda teorica: 8 Gbit/s. È ciò che rende possibile tenere in memoria i fotogrammi di un display da 1024 x 600 pixel e di una telecamera insieme. La flash invece è sempre esterna, fino a 64 MB, e sia flash sia PSRAM possono essere cifrate in hardware con XTS-AES.

Immagini, video e voce

Il P4 è nato per le interfacce uomo-macchina: pannelli touch, videocitofoni, terminali con telecamera. Per questo ha un intero gruppo di periferiche che lavorano sulle immagini senza disturbare i core.

Percorso di un'immagine nell'ESP32-P4: camera MIPI, ingresso MIPI-CSI, ISP, PPA, uscita MIPI-DSI verso il display; in parallelo codifica H.264 o JPEG verso la rete o la scheda SD; i fotogrammi passano dalla PSRAM
Dalla telecamera al display, o alla rete: quasi tutto il lavoro è fatto in hardware.
  • MIPI-CSI e MIPI-DSI. MIPI è lo standard dei collegamenti tra processore, telecamera e display negli smartphone: pochi fili differenziali ad alta velocità invece di decine di linee parallele. Il P4 ha un ingresso CSI-2 per una telecamera e un’uscita DSI per un display, entrambi con 2 lane da 1,5 Gbps.
  • ISP (Image Signal Processor). Un sensore d’immagine produce dati “grezzi”: ogni pixel vede un solo colore. L’ISP li trasforma in un’immagine vera, correggendo pixel difettosi, bilanciamento del bianco, colori e nitidezza, fino a 1920 x 1080, e calcola le statistiche per esposizione e messa a fuoco automatiche.
  • PPA (Pixel-Processing Accelerator). Ruota l’immagine di 90, 180 o 270 gradi, la scala, la specchia e sovrappone due livelli con la trasparenza: è il lavoro che fa una libreria grafica come LVGL quando disegna pulsanti e finestre sopra uno sfondo.
  • H.264 e JPEG. Il codificatore H.264 comprime il video in tempo reale fino a 1080p a 30 fotogrammi al secondo; il codec JPEG comprime e decomprime immagini fino a 4K e flussi fino a 1080p a 40 fps. Così un video può andare in rete o su una scheda SD senza occupare i core.
  • Interfacce parallele e voce. Ci sono anche l’interfaccia LCD parallela (8, 16 o 24 bit) e quella per camere DVP, come sull’S3, e un blocco VAD che riconosce la presenza della voce e può svegliare il chip: il primo passo per un comando vocale a basso consumo.

Le periferiche

Anche qui il P4 è abbondante: 55 GPIO, cinque UART, quattro SPI, due I2C più un I3C, tre I2S per l’audio, tre controller TWAI (CAN 2.0), un host SD/MMC con due slot (anche SDIO 3.0), due ADC a 12 bit su 14 pin, 14 pin touch, 8 canali LED PWM, due MCPWM, RMT, contatore di impulsi e IO parallelo. Più quelle “a basso consumo”, sul dominio LP. Due meritano un paragrafo:

  • USB 2.0 high-speed. A 480 Mbit/s, con il transceiver integrato, può fare da host o da dispositivo: una chiavetta, un disco, una webcam USB, oppure il P4 visto dal PC come periferica veloce. C’è anche una seconda USB full-speed e la solita USB Serial/JTAG per programmazione e debug.
  • Ethernet. Il P4 ha il MAC Ethernet a 10/100 Mbit/s; serve un chip PHY esterno, collegato in RMII o MII, e una presa RJ45. In un quadro elettrico un cavo è più affidabile di una radio chiusa nel metallo, ed è infatti la scelta del nostro supervisore dell’energia.

Il Wi-Fi in prestito: P4 + C6

Un chip senza radio, nel mondo IoT, sembra un controsenso. La soluzione di Espressif è elegante: si affianca al P4 un chip con la radio, di solito un ESP32-C6, e lo si trasforma in co-processore con ESP-Hosted.

Abbinamento ESP32-P4 ed ESP32-C6: sul P4 applicazione, API esp_wifi, stack TCP/IP ed ESP-Hosted lato host; bus SDIO; sul C6 ESP-Hosted lato co-processore, driver Wi-Fi e Bluetooth e radio
Il P4 tiene l’applicazione e lo stack TCP/IP; il C6 fa da “scheda di rete” senza fili.

Il trucco è che il programma sul P4 non si accorge di nulla. Chiama le solite funzioni esp_wifi per cercare le reti e collegarsi; ESP-Hosted le trasforma in messaggi (RPC, chiamate di procedura remota) e le spedisce al C6, che esegue le vere funzioni del Wi-Fi. Una volta collegati, i pacchetti di rete viaggiano sullo stesso bus e lo stack TCP/IP (lwIP) gira sul P4, come se la radio fosse sua. Il bus può essere SDIO, il più veloce, oppure SPI o UART. Lo stesso meccanismo porta al P4 anche il Bluetooth LE del C6.

Il prezzo da pagare è un secondo firmware da caricare e aggiornare sul C6, che deve usare lo stesso tipo di bus e gli stessi pin del lato host. Le schede pronte, per fortuna, arrivano con tutto già cablato.

Quanto consuma

Senza radio, il grafico del P4 è diverso da quello dei fratelli: non ci sono picchi di trasmissione, ma il calcolo pesa di più.

Grafico dei consumi dell'ESP32-P4: da 150 mA con due core a 400 MHz e periferiche accese a 12 microampere in deep-sleep
Il P4 da solo: tra 15 e 150 mA quando lavora, microampere quando dorme. Il C6 e il display vanno aggiunti.
  • Al lavoro. Con due core a 400 MHz il datasheet indica 97 mA a periferiche spente e 150 mA con tutti i clock delle periferiche accesi; scendendo a 40 MHz si sta tra 15 e 39 mA. Gli accessi a flash e PSRAM possono far salire questi valori.
  • In sonno. In light-sleep si va da 0,8 mA con tutte le alimentazioni accese a 75 µA con le periferiche spente (la PSRAM, se resta alimentata, aggiunge circa 0,1 mA più il proprio consumo); in deep-sleep, con il timer e la memoria LP, circa 12 µA.
  • Il sistema completo. Un supervisore con il P4 consuma molto più del chip: c’è il C6 per il Wi-Fi, c’è il PHY Ethernet e soprattutto c’è la retroilluminazione del display. Per questo nei progetti abbiamo sempre ragionato sulla scheda intera.

C’è anche una differenza pratica: il P4 è più esigente da alimentare. Oltre ai 3,3 V ha domini separati, con il core a 1,1 V, la PSRAM a 1,8 V e i MIPI a 2,5 V; alcuni li genera da sé con regolatori interni, altri vanno previsti sulla scheda. È un buon motivo per partire da una scheda pronta.

Sicurezza

Il P4 ha la dotazione più completa della famiglia: acceleratori per AES, SHA, RSA ed ECC, periferiche di firma digitale RSA ed ECDSA, secure boot, cifratura XTS-AES di flash e PSRAM, controllo dei permessi e un Key Manager che ricava una chiave unica del chip (HUK) dalla “impronta” della sua SRAM all’accensione (SRAM PUF).

Chip, moduli e schede

Livello Esempio Quando
Chip ESP32-P4NRW16X, ESP32-P4NRW32X Schede progettate da zero, con flash, alimentazioni e piste MIPI a carico nostro
Scheda di sviluppo ufficiale ESP32-P4-Function-EV-Board Tutorial e prototipi con display, camera, audio ed Ethernet
Scheda compatta di terze parti Waveshare ESP32-P4-NANO Supervisori da integrare in un quadro

La ESP32-P4-Function-EV-Board di Espressif ha 32 MB di PSRAM, 16 MB di flash, un modulo ESP32-C6-MINI-1 per Wi-Fi 6 e Bluetooth LE, Ethernet 10/100 con presa RJ45, porte USB high-speed (Type-C e Type-A), codec audio ES8311 con microfono e uscita per altoparlante, slot microSD a 4 bit e un connettore per il display touch da 7 pollici (1024 x 600, MIPI-DSI) e per la camera MIPI-CSI da 2 megapixel. La Waveshare ESP32-P4-NANO, secondo il costruttore, abbina il P4 a un ESP32-C6-MINI-1 collegato in SDIO, con Ethernet a 100 Mbit/s e slot per la scheda di memoria.

Il P4 e i suoi fratelli

Chip Processore Radio Quando sceglierlo
ESP32-C6 RISC-V a 160 MHz + core LP Wi-Fi 6, Bluetooth LE, 802.15.4 Sensori e attuatori connessi, domotica, Matter, basso consumo
ESP32-S3 Due core Xtensa LX7 a 240 MHz Wi-Fi 4, Bluetooth LE Più calcolo, USB completa, telecamere, display, audio
ESP32-H2 RISC-V a 96 MHz Bluetooth LE, 802.15.4 (niente Wi-Fi) Nodi Thread o Zigbee a batteria, coprocessore radio
ESP32-P4 Due core RISC-V a 400 MHz + core LP nessuna (si abbina a un C6) Interfacce video, display grandi, elaborazione locale

Il confronto più interessante è con l’S3: entrambi sanno pilotare display e telecamere, ma il P4 ha MIPI, H.264, USB high-speed, Ethernet e molta più memoria; l’S3 ha la radio. Per un display piccolo con il Wi-Fi basta l’S3; per un pannello da 7 pollici o un video, il P4 con il C6. A ognuno di questi chip è dedicato un articolo della serie (pubblicazione in arrivo).

Dove lo usiamo

  • Serie ESP32-C6 ed ESP32-P4: la ESP32-P4-Function-EV-Board è la scheda di quattro tutorial: scheda SD con FAT32 tramite l’host SDMMC (07), matrice LED RGB HUB75 (10), audio I2S con il codec ES8311 (15) e amplificatore in classe D con musica liquida via Wi-Fi, dove il Wi-Fi arriva dal C6 a bordo (16). Né il P4 né il C6 hanno il Bluetooth Classic, per questo nel 16 niente A2DP (pubblicazione in arrivo).
  • Energia: il supervisore del fotovoltaico ibrido ha un firmware ESP-IDF 5.4 per l’ESP32-P4, la variante di riferimento tra le quattro previste (ESP32-P4, Raspberry Pi CM5, Arduino UNO Q, Arduino VENTUNO Q). Usa solo l’Ethernet, sull’EMAC con un PHY IP101, e divide il lavoro tra i due core: il tempo reale su uno, la rete e i servizi sull’altro. Compila senza avvisi, ma non ha ancora girato su hardware reale.
  • Irrigazione: anche qui il supervisore di riferimento è un ESP32-P4; la proposta è la Waveshare ESP32-P4-NANO, con il Wi-Fi dal C6 tramite ESP-Hosted. Il software del supervisore avrà un articolo dedicato.
  • Lievitazione e birrificio: l’ESP32-P4 è la variante di riferimento delle quattro previste per il controllore, con il touchscreen MIPI-DSI come pannello e il Wi-Fi da un C6 affiancato. La visione artificiale resta invece sulle schede Arduino Q.

I progetti sono raccolti nelle sezioni ESP32 e Domotica.

Per approfondire

Imprenditore, maker, MBSE enthusiast e co-autore di Web App Portal. Collegati su LinkedIn.