Pin STRAP
1. Cosa sono i pin STRAP
-
I pin STRAP sono pin di configurazione all’avvio (boot strapping pins).
-
Il loro valore (alto o basso) quando l’ESP32-S3 viene acceso o resettato determina alcune modalità di avvio del chip, ad esempio:
-
Da quale interfaccia flash leggere il firmware
-
La modalità di boot (download mode o normale esecuzione)
-
Velocità SPI flash e altre opzioni hardware
Quindi non servono per segnali o input analogici durante il funzionamento normale, ma solo per la configurazione iniziale del boot.
2. Come funzionano
-
Quando accendi l’ESP32-S3, i pin STRAP vengono letti internamente.
-
Alcuni pin vengono collegati a resistenze interne pull-up o pull-down e/o a jumper esterni.
-
A seconda di come sono impostati (0V o 3.3V) il chip decide:
3. Esempio pratico
-
Sul modulo ESP32-S3-WROOM-1, alcuni pin STRAP comuni sono:
-
GPIO0 → determina se entra in modalità bootloader UART
-
GPIO8, GPIO9, GPIO10 → velocità SPI flash e modalità
-
GPIO45 → modalità flash o JTAG
-
Non devi toccarli per leggere sensori o usare ADC/Touch durante il funzionamento normale.
💡 Regola generale:
I pin STRAP sono solo per configurazione all’avvio. Una volta che il chip ha avviato il firmware, puoi usare altri pin GPIO normalmente, ma NON usare i pin STRAP per cose come touch o ADC se non sei sicuro, perché cambiare il loro stato durante il reset può cambiare la modalità di boot.
GPO0 - BOOT
GPO3 - JTAG
GPO45 - VSPI
GPO46 - LOG
1. GPIO0 – BOOT
-
Questo è il pin principale per entrare in modalità bootloader.
-
Funzione: determina se l’ESP32-S3 avvia il firmware in flash o entra in modalità download firmware via UART (bootloader).
-
Tipico comportamento:
-
Stato basso (0V) → entra in modalità bootloader UART (utile per caricare nuovi sketch via USB/UART)
-
Stato alto (3.3V) → avvio normale, esegue il firmware dalla flash.
-
Nota: Molti moduli hanno una resistenza pull-up interna su questo pin.
2. GPIO3 – JTAG
-
Serve per debug tramite JTAG.
-
Funzione: se collegato a un debugger JTAG esterno, permette il debug a livello di hardware, breakpoint e lettura della memoria.
-
In modalità normale, se non usi JTAG, il pin può essere lasciato flottante o usato solo come GPIO se la scheda lo permette (ma alcuni pin STRAP non vanno modificati durante il boot).
3. GPIO45 – VSPI
-
Indica il pin di selezione/clock per l’interfaccia SPI flash (VSPI = SPI “veloce” usata dalla flash).
-
Serve per determinare velocità e modalità SPI della flash interna durante il boot.
-
Non va collegato ad altri dispositivi a caso, perché cambiando il livello al reset puoi compromettere il boot.
4. GPIO46 – LOG
-
Pin legato al logging/debug interno durante il boot.
-
Serve principalmente a scopi diagnostici o a leggere segnali di stato del bootloader.
-
In pratica non lo usi nei progetti comuni; è solo per controllo dei segnali interni.
✅ Riassunto pratico
-
Non collegare i pin STRAP a sensori o carichi durante il boot, perché cambiare il loro stato può modificare il modo in cui l’ESP32-S3 si avvia.
-
Dopo l’avvio, alcuni pin possono essere usati come GPIO (dipende dal modulo e dalla scheda), ma mai toccare il loro livello durante il reset.
-
Per touch, ADC, pulsanti, usa altri GPIO liberi, non i pin STRAP.
Lasciarli flottanti generalmente va bene, perché:
1. GPIO0 – BOOT
-
Ha normalmente una resistenza pull-up interna, quindi se lo lasci flottante:
-
Se vuoi entrare in modalità bootloader (per caricare sketch via USB/UART), lo devi portare temporaneamente a 0V (collegando a massa) durante il reset.
2. GPIO3 – JTAG, GPIO45 – VSPI, GPIO46 – LOG
3. Regola pratica
-
Non collegare a carichi o sensori questi pin durante il boot, perché il loro livello determina la modalità di avvio.
-
Dopo l’avvio, alcuni di questi pin possono essere letti come GPIO normali (ma meglio controllare il datasheet), ma mai influenzare il loro stato durante il reset.
💡 In sintesi: lasciarli flottanti va benissimo per l’uso normale. Servono solo se vuoi cambiare modalità di boot o fare debug JTAG.
|