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:

    • Avvio normale (esecuzione firmware in flash)

    • Download firmware tramite UART (bootloader)

    • Modalità JTAG (debug)

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:

    • Lo strato interno lo considera alto → avvio normale del firmware dalla flash.

  • 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

  • Questi pin hanno funzioni specifiche solo all’avvio.

  • Se li lasci flottanti:

    • L’ESP32-S3 usa i valori di default interni (tipicamente pull-up o pull-down interne) → il chip si avvia normalmente.

    • Non succede nulla di pericoloso, non interferiscono con il funzionamento normale.

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.