🛠 Strapping GPIO2/8/9 : le diagnostic de boot

ESP32-C3 · avance · Schéma : IMG-esp32-c3-avance-2-strapping-gpio2-8-9-boot.svg — Broches de strapping GPIO2, GPIO8 et GPIO9 du ESP32-C3 échantillonnées au reset, niveaux attendus indiqués

Objectifs

Au moment du reset, le ESP32-C3 échantillonne trois broches de strapping : GPIO2, GPIO8 et GPIO9. Leur niveau décide du mode de démarrage (flash, JTAG, messages ROM). Un capteur, un NeoPixel ou un pull-down mal placé sur l'une d'elles produit des boot loops, des « invalid header » ou des ports USB fantômes. Ce tutoriel apprend à diagnostiquer l'état de ces broches et la raison du reset.

Matériel

Code complet

const int STRAP[] = {2, 8, 9};   // broches echantillonnees au reset

void setup {
  Serial.begin(115200);
  delay(1000);                    // le temps d'ouvrir le terminal

  esp_reset_reason_t r = esp_reset_reason;
  Serial.printf("Raison de reset : %d "
                "(1=POWERON, 3=SW, 8=BROWNOUT...)\n", (int)r);

  for (int p : STRAP) {
    pinMode(p, INPUT);            // lecture sans forcer de pull
    int niveau = digitalRead(p);
    Serial.printf("GPIO%d = %d %s\n", p, niveau,
                  niveau == 0 ? "<- BAS : risque au prochain reset !"
                              : "OK");
  }
}

void loop { delay(1000); }

Vérification attendue

Au repos, GPIO9 (bouton BOOT) et GPIO8 lisent 1, GPIO2 est libre. En tirant GPIO9 à la masse puis en resetant, le log affiche le passage en mode téléchargement ; en tirant GPIO8 vers le bas, le comportement de boot change (messages ROM désactivés, mode modifié). Le diagnostic croise ces niveaux avec la raison de reset.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels