Les broches à surveiller sur l’ESP32-S3
GPIO 0, 3, 45 et 46 : broches de strapping
Le GPIO0 a un pull-up et est relié au bouton BOOT : à l’état BAS au reset, la puce passe en mode téléchargement. Le GPIO46 doit être à l’état BAS ou flottant pour le mode téléchargement, et le GPIO45 choisit la tension de la flash : aucun des deux ne doit donc passer à l’état HAUT à la mise sous tension. Le GPIO3 ne compte que si un eFuse choisit la source du JTAG ; sur les cartes standard, c’est une broche libre avec ADC et tactile.
| GPIO | Valeur au reset | Ce qu’il sélectionne | En pratique |
|---|---|---|---|
| 0 | Pull-up faible (HAUT) | Mode de démarrage : HAUT lance le programme, BAS passe en mode téléchargement | Bouton BOOT ; rien d’autre ne doit le maintenir à l’état BAS |
| 3 | Flottant | Source du JTAG, seulement si un eFuse l’active | Une broche normale sur les puces standard |
| 45 | Pull-down faible (BAS) | Tension de la flash : BAS 3,3 V, HAUT 1,8 V | Jamais à l’état HAUT au reset |
| 46 | Pull-down faible (BAS) | Doit être BAS pour le mode téléchargement ; contrôle aussi les messages de démarrage de la ROM | Jamais à l’état HAUT au reset |
GPIO 35, 36 et 37 : PSRAM octale
Sur les versions les plus courantes, N8R8, N16R8V et N32R8V, le module utilise une PSRAM ou une flash octale et ces trois broches y sont reliées. Seules les cartes N8 et N8R2 les laissent libres : vérifiez la référence de votre carte avant de les utiliser. Sur les deux versions V, N16R8V et N32R8V, le module ESP32-S3-WROOM-2 a une mémoire en 1,8 V, et les GPIO47 et GPIO48 fonctionnent aussi en 1,8 V.
GPIO 19 et 20 : USB natif
Elles portent les lignes D− et D+ du port marqué USB. Les utiliser comme GPIO désactive la programmation, le port série et le débogage par ce port ; le port UART, sur les GPIO 43 et 44, continue de fonctionner.
ADC, tactile et Wi-Fi
L’ADC1 est sur les GPIO 1 à 10 et l’ADC2 sur les GPIO 11 à 20. Le pilote Wi-Fi utilise l’ADC2 : les lectures sur ces broches peuvent donc échouer avec le Wi-Fi activé. Dans un projet connecté, utilisez les GPIO 1 à 10. Le tactile fonctionne sur les GPIO 1 à 14, et les GPIO 0 à 21 sont des broches RTC qui peuvent réveiller la puce de la veille profonde.
Alimentation et LED RGB
Alimentez la carte par une seule source à la fois : un port USB, la broche 5V ou la broche 3V3, comme l’indique le guide d’Espressif. La LED RGB adressable est sur le GPIO38 pour les cartes v1.1 et sur le GPIO48 pour la première version ; elle demande une bibliothèque ou un pilote de LED RGB, pas un simple digitalWrite().
Tableau complet des broches de l’ESP32-S3-DevKitC-1
| Broche | GPIO | État | Analogique | Fonctions | Notes |
|---|---|---|---|---|---|
| J3-14 | GPIO0 | Avec précaution | Non | RTC_GPIO0, PWM (LEDC) | strapping, bouton BOOT |
| J3-4 | GPIO1 | Libre | ADC1_CH0 | TOUCH1, RTC_GPIO1, PWM (LEDC) | Aucune restriction |
| J3-5 | GPIO2 | Libre | ADC1_CH1 | TOUCH2, RTC_GPIO2, PWM (LEDC) | Aucune restriction |
| J1-13 | GPIO3 | Libre | ADC1_CH2 | TOUCH3, RTC_GPIO3, PWM (LEDC) | strapping (source du JTAG) |
| J1-4 | GPIO4 | Libre | ADC1_CH3 | TOUCH4, RTC_GPIO4, PWM (LEDC) | Aucune restriction |
| J1-5 | GPIO5 | Libre | ADC1_CH4 | TOUCH5, RTC_GPIO5, PWM (LEDC) | Aucune restriction |
| J1-6 | GPIO6 | Libre | ADC1_CH5 | TOUCH6, RTC_GPIO6, PWM (LEDC) | Aucune restriction |
| J1-7 | GPIO7 | Libre | ADC1_CH6 | TOUCH7, RTC_GPIO7, PWM (LEDC) | Aucune restriction |
| J1-12 | GPIO8 | Libre | ADC1_CH7 | TOUCH8, RTC_GPIO8, PWM (LEDC) | I²C SDA |
| J1-15 | GPIO9 | Libre | ADC1_CH8 | TOUCH9, RTC_GPIO9, PWM (LEDC) | I²C SCL |
| J1-16 | GPIO10 | Libre | ADC1_CH9 | TOUCH10, RTC_GPIO10, PWM (LEDC) | SPI CS |
| J1-17 | GPIO11 | Libre | ADC2_CH0 | TOUCH11, RTC_GPIO11, PWM (LEDC) | ADC2 : pas avec le Wi-Fi, SPI MOSI (TX) |
| J1-18 | GPIO12 | Libre | ADC2_CH1 | TOUCH12, RTC_GPIO12, PWM (LEDC) | ADC2 : pas avec le Wi-Fi, SPI SCK |
| J1-19 | GPIO13 | Libre | ADC2_CH2 | TOUCH13, RTC_GPIO13, PWM (LEDC) | ADC2 : pas avec le Wi-Fi, SPI MISO (RX) |
| J1-20 | GPIO14 | Libre | ADC2_CH3 | TOUCH14, RTC_GPIO14, PWM (LEDC) | ADC2 : pas avec le Wi-Fi |
| J1-8 | GPIO15 | Libre | ADC2_CH4 | RTC_GPIO15, PWM (LEDC), XTAL_32K_P | quartz 32 kHz, ADC2 : pas avec le Wi-Fi |
| J1-9 | GPIO16 | Libre | ADC2_CH5 | RTC_GPIO16, PWM (LEDC), XTAL_32K_N | quartz 32 kHz, ADC2 : pas avec le Wi-Fi |
| J1-10 | GPIO17 | Libre | ADC2_CH6 | RTC_GPIO17, PWM (LEDC) | ADC2 : pas avec le Wi-Fi |
| J1-11 | GPIO18 | Libre | ADC2_CH7 | RTC_GPIO18, PWM (LEDC) | ADC2 : pas avec le Wi-Fi |
| J3-20 | GPIO19 | Avec précaution | ADC2_CH8 | RTC_GPIO19, PWM (LEDC), USB D− | USB natif, ADC2 : pas avec le Wi-Fi |
| J3-19 | GPIO20 | Avec précaution | ADC2_CH9 | RTC_GPIO20, PWM (LEDC), USB D+ | USB natif, ADC2 : pas avec le Wi-Fi |
| J3-18 | GPIO21 | Libre | Non | RTC_GPIO21, PWM (LEDC) | Aucune restriction |
| J3-13 | GPIO35 | Avec précaution | Non | PWM (LEDC) | PSRAM ou flash octale |
| J3-12 | GPIO36 | Avec précaution | Non | PWM (LEDC) | PSRAM ou flash octale |
| J3-11 | GPIO37 | Avec précaution | Non | PWM (LEDC) | PSRAM ou flash octale |
| J3-10 | GPIO38 | Libre | Non | PWM (LEDC) | LED RGB (v1.1) |
| J3-9 | GPIO39 | Libre | Non | PWM (LEDC), MTCK (JTAG) | JTAG |
| J3-8 | GPIO40 | Libre | Non | PWM (LEDC), MTDO (JTAG) | JTAG |
| J3-7 | GPIO41 | Libre | Non | PWM (LEDC), MTDI (JTAG) | JTAG |
| J3-6 | GPIO42 | Libre | Non | PWM (LEDC), MTMS (JTAG) | JTAG |
| J3-2 | GPIO43 | Avec précaution | Non | PWM (LEDC), U0TXD | UART0, UART TX |
| J3-3 | GPIO44 | Avec précaution | Non | PWM (LEDC), U0RXD | UART0, UART RX |
| J3-15 | GPIO45 | Avec précaution | Non | PWM (LEDC) | strapping |
| J1-14 | GPIO46 | Avec précaution | Non | PWM (LEDC) | strapping |
| J3-17 | GPIO47 | Libre | Non | PWM (LEDC) | 1,8 V sur modules V |
| J3-16 | GPIO48 | Libre | Non | PWM (LEDC) | 1,8 V sur modules V, LED RGB (v1.0) |
Broches par défaut d’Arduino-ESP32 pour l’ESP32-S3 : I²C sur 8 (SDA) et 9 (SCL), SPI sur 12 (SCK), 13 (MISO), 11 (MOSI) et 10 (SS), UART0 sur 43 (TX) et 44 (RX). Grâce à la matrice GPIO, n’importe quelle broche libre peut les porter.
Questions fréquentes
Quelles broches de l’ESP32-S3 peut-on utiliser sans risque ?
Sur une DevKitC-1, les broches sans restriction sont les GPIO 1, 2, 4 à 18, 21, 38 à 42, 47 et 48 (sauf sur les cartes N16R8V et N32R8V en 1,8 V) ; le 38 ou le 48 commande aussi la LED RGB, selon la version de la carte. Le GPIO3 est libre lui aussi, sauf si un eFuse l’utilise pour le JTAG, et les GPIO 35 à 37 le sont sur les cartes N8 et N8R2. Attention aux GPIO 0, 45 et 46 (strapping), 19 et 20 (USB), 43 et 44 (UART0).
Pourquoi ne puis-je pas utiliser les GPIO 35, 36 et 37 ?
Sur les cartes à PSRAM ou flash octale (N8R8, N16R8V, N32R8V), ces broches sont reliées à la mémoire à l’intérieur du module, et les piloter fait planter le programme. Elles ne sont libres que sur les versions N8 et N8R2.
Peut-on utiliser l’ADC2 avec le Wi-Fi sur l’ESP32-S3 ?
Pas de manière fiable : le pilote Wi-Fi utilise l’ADC2, donc les lectures sur les GPIO 11 à 20 peuvent échouer avec le Wi-Fi activé. Placez les entrées analogiques sur les GPIO 1 à 10 (ADC1).
Quel port USB de la DevKitC-1 utiliser ?
Les deux permettent de téléverser. Le port UART passe par un convertisseur USB-UART relié aux GPIO 43 et 44 ; le port USB va à l’USB de la puce sur les GPIO 19 et 20, et offre en plus le débogage JTAG et des fonctions de périphérique USB, comme un clavier.
Les broches de l’ESP32-S3 tolèrent-elles le 5 V ?
Non. Les GPIO fonctionnent en 3,3 V et ne sont pas garantis pour le 5 V. Pour les signaux 5 V, utilisez un convertisseur de niveaux logiques ou un pont diviseur résistif.