Die Tabellen, nach denen du deine Verdrahtung richtest
Die Strapping-Pins sind bei jedem Chip andere, und sie entscheiden bei jedem Chip anderes. Hier gibt es nichts zu übertragen.
ESP32 (klassisch) — fünf Strapping-Pins
| Pin | interner Pull | Vorgabe | wählt |
|---|---|---|---|
| GPIO0 | Pull-up | 1 | Boot-Modus: 1 = Programm aus dem Flash, 0 = Download |
| GPIO2 | Pull-down | 0 | zweiter Boot-Modus-Pin |
| GPIO12 (MTDI) | Pull-down | 0 | Flash-Spannung: 0 = 3.3 V, 1 = 1.8 V |
| GPIO15 (MTDO) | Pull-up | 1 | Bootlog auf UART0: 1 = an, 0 = aus |
| GPIO5 | Pull-up | 1 | mit MTDO das Timing des SDIO-Slave |
ESP32-S3 — vier Strapping-Pins
| Pin | interner Pull | Vorgabe | wählt |
|---|---|---|---|
| GPIO0 | schwacher Pull-up | 1 | Boot-Modus (mit GPIO46) |
| GPIO3 | offen | — | JTAG-Signalquelle |
| GPIO45 | schwacher Pull-down | 0 | Spannung VDD_SPI |
| GPIO46 | schwacher Pull-down | 0 | Boot-Modus und ROM-Ausgabe |
ESP32-C6 — fünf Strapping-Pins
| Pin | interner Pull | Vorgabe | wählt |
|---|---|---|---|
| GPIO4 (MTMS) | offen | — | SDIO-Taktflanke |
| GPIO5 (MTDI) | offen | — | SDIO-Taktflanke |
| GPIO8 | offen | — | Boot-Modus und ROM-Ausgabe |
| GPIO9 | schwacher Pull-up | 1 | Boot-Modus: 1 = Flash, 0 = Download |
| GPIO15 | offen | — | JTAG-Signalquelle |
Der C6 dreht die Regel um
Die Boot-Modus-Tabellen im Vergleich:
| Chip | Programm aus dem Flash (Vorgabe) | Download-Modus |
|---|---|---|
| ESP32 | GPIO0 = 1, GPIO2 beliebig | GPIO0 = 0, GPIO2 = 0 |
| ESP32-S3 | GPIO0 = 1, GPIO46 beliebig | GPIO0 = 0, GPIO46 = 0 |
| ESP32-C6 | GPIO9 = 1, GPIO8 beliebig | GPIO9 = 0, GPIO8 = 1 |
Beim ESP32 und beim S3 müssen für den Download-Modus beide Pins auf Low. Beim C6 muss GPIO8 auf High — genau umgekehrt.
Wer die Regel vom ESP32 überträgt und beim C6 beide Pins nach Masse zieht, kommt nicht in den Download-Modus und sucht den Fehler im Programmierkabel.
Der Klassiker: GPIO12 beim ESP32
Eine Zeile in der ersten Tabelle ist teurer als alle anderen zusammen.
GPIO12 (im Datenblatt MTDI) legt fest, mit welcher Spannung der Flash versorgt wird: Low bedeutet 3.3 V, High bedeutet 1.8 V. Der Vorgabewert ist Low, dafür sorgt der interne Pull-down.
Jetzt hängst du eine Leuchtdiode mit Vorwiderstand von GPIO12 nach 3.3 V — eine völlig übliche Schaltung, für den Betrieb genau richtig. Beim Reset zieht dieser Zweig den Pin aber auf High. Der Chip stellt die Flash-Spannung auf 1.8 V. Der Flash im Modul arbeitet mit 3.3 V und antwortet nicht.
Das Gerät bootet nicht mehr. Und es ist nichts kaputt, es lässt sich auch nichts im Programm reparieren — der Fehler steckt in der Schaltung und wirkt, bevor irgendein Programm läuft.
Die ESP-IDF-Dokumentation warnt an dieser Stelle ausdrücklich: Ein Pull-up an diesem Pin kann das Flashen und das Booten verhindern, wenn ein 3.3-V-Flash verwendet wird.
Die Arbeitsregel
An einen Strapping-Pin gehört nichts, was ihn beim Reset ziehen könnte.
Wenn du einen Strapping-Pin doch brauchst — sie sind knapp, und manchmal geht es nicht anders —, dann so:
| Verwendung | tauglich? |
|---|---|
| als Ausgang, der erst im Programm etwas treibt | meistens ja, solange die Last beim Reset nicht zieht |
| als Eingang von einer hochohmigen Quelle | oft ja |
| mit einem Pull-Widerstand in die Vorgaberichtung | ja — er verstärkt nur, was ohnehin gilt |
| mit einem Pull-Widerstand gegen die Vorgaberichtung | nein |
| an einem Bauteil, das beim Einschalten selbst zieht | nein, ohne Messung nicht |
Und danach: einmal die Spannung am Pin während des Einschaltens messen. Das ist der einzige Beweis.
Quellen
- ESP32 Series Datasheet v5.2, Abschnitt 3: Tabelle 3-1 „Default Configuration of Strapping Pins", Tabelle 3-3 „Chip Boot Mode Control", Abschnitt 3.2 (
MTDI= 0 →VDD_SDIOausVDD3P3_RTC, typisch 3.3 V;MTDI= 1 → interner 1.8-V-Regler), Tabelle 3-4 „U0TXD Printing Control" - ESP32-S3 Series Datasheet v2.2, Abschnitt 3: Tabellen 3-1 und 3-3, Strapping-Pins GPIO0, 3, 45, 46
- ESP32-C6 Series Datasheet v1.5, Abschnitt 3: Tabellen 3-1 und 3-3, Strapping-Pins MTMS (GPIO4), MTDI (GPIO5), GPIO8, GPIO9, GPIO15
- esptool-Dokumentation, Boot Mode Selection (ESP32) — Warnung zu einem Pull-up an GPIO12 bei 3.3-V-Flash
Die Pull-Richtungen wurden gegen die Bitwerte derselben Tabelle und gegen die esptool-Dokumentation gegengeprüft.
Stand geprüft am 3. August 2026.