🛠 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

Objetivos

En el momento del reset, el ESP32-C3 muestrea tres pines de strapping: GPIO2, GPIO8 y GPIO9. Su nivel determina el modo de arranque (flash, JTAG, mensajes ROM). Un sensor, un NeoPixel o una resistencia pull-down mal colocada en uno de ellos produce bucles de arranque, errores de «invalid header» o puertos USB fantasma. Este tutorial enseña a diagnosticar el estado de estos pines y la causa del reset.

Material

Código completo

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); }

Verificación esperada

En reposo, GPIO9 (botón BOOT) y GPIO8 leen 1, GPIO2 está libre. Al llevar GPIO9 a masa y luego reiniciar, el registro muestra el cambio al modo de descarga; al bajar GPIO8, el comportamiento de arranque cambia (mensajes ROM desactivados, modo modificado). El diagnóstico cruza estos niveles con la causa del reset.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales