Drei Sorten Speicher, und keine heisst wie erwartet
| Speicher | wo | wofür | flüchtig? |
|---|---|---|---|
| SRAM | im Chip | Variablen, Stack, Puffer | ja |
| ROM | im Chip | der eingebrannte Startcode von Espressif | nein, unveränderlich |
| Flash | fast immer ausserhalb des Chips | dein Programm, Konfiguration, Dateisystem | nein |
| PSRAM | ausserhalb, optional | zusätzlicher Arbeitsspeicher für grosse Puffer | ja |
Der Punkt, der überrascht: Dein Programm liegt nicht im Chip. Es liegt im Flash-Baustein daneben, und der Chip holt es sich beim Start und danach laufend über SPI nach. Deshalb sind die Flash-Pins dauerhaft belegt — dazu Modul 5.
| ESP32 | ESP32-S2 | ESP32-S3 | ESP32-C3 | ESP32-C6 | ESP32-H2 | |
|---|---|---|---|---|---|---|
| SRAM | 520 kB | 320 kB | 512 kB | 400 kB | 512 kB + 16 kB LP | 320 kB |
| ROM | 448 kB | 128 kB | 384 kB | 384 kB | 320 kB | 128 kB |
PSRAM ist ein eigenes Thema bei der Auswahl. Der S3 kann acht Datenleitungen zum Speicher benutzen (Octal), was ihn für Kamera- und Displaypuffer interessant macht — kostet aber weitere Pins. Wer PSRAM braucht, sucht sich gezielt eine Chipvariante, die es im Gehäuse mitbringt.
Wie der Chip an den USB-Stecker kommt
Hier gibt es genau zwei Bauformen, und sie erklären ein Detail, über das viele stolpern.
Der klassische ESP32 hat keinen USB-Controller. Als einziger in der Familie. Ein Board mit ESP32 hat deshalb immer einen zusätzlichen Baustein auf der Platine — eine USB-UART-Brücke, meist ein CP2102 oder ein CH340. Dieser Baustein spricht USB nach aussen und UART nach innen, und er steuert nebenbei über zwei Transistoren die Pins für Reset und Boot-Modus mit. Deshalb musst du bei so einem Board beim Flashen normalerweise keinen Knopf drücken.
Alle neueren Chips haben eine USB-Serial-JTAG-Einheit im Chip. Der USB-Stecker geht direkt an zwei feste GPIO. Kein zusätzlicher Baustein, und Debuggen über JTAG ist ohne Adapter möglich.
| Chip | USB |
|---|---|
| ESP32 | keiner — externe Brücke nötig |
| ESP32-S2 | USB OTG |
| ESP32-S3 | USB OTG und USB-Serial-JTAG |
| ESP32-C3, C6, H2 | USB-Serial-JTAG |
Der Unterschied zwischen den beiden USB-Sorten: USB-Serial-JTAG dient zum Flashen und Debuggen. USB OTG ist ein vollwertiger USB-Controller, mit dem dein Gerät als Tastatur, Massenspeicher oder eigenes USB-Gerät auftreten kann.
Die USB-Pins sind Pins
Bei den Chips mit USB-Serial-JTAG liegen D+ und D− auf zwei ganz normalen GPIO — beim ESP32-S3 auf GPIO19 und GPIO20, beim ESP32-C6 auf GPIO12 und GPIO13.
Diese Pins lassen sich als gewöhnliche GPIO umkonfigurieren. Wenn du das tust, ist USB weg — und mit ihm der Weg, über den du das Gerät flashst. Zurück kommst du dann nur über UART oder über das Auslösen des Download-Modus von Hand.
Das ist kein Grund, die Pins zu meiden, aber ein Grund, sie erst zu belegen, wenn nichts anderes mehr frei ist.
Kurze Selbstkontrolle
Zählt nicht — nur zum Prüfen, ob es angekommen ist.
1.Auf einem Board mit klassischem ESP32 sitzt ein CH340. Warum?
2.Warum liegt dein Programm nicht im Chip selbst?
Quellen
- Abschnitt „Features" der Datenblätter ESP32 v5.2, ESP32-S2 v1.9, ESP32-S3 v2.2, ESP32-C3 v2.4, ESP32-C6 v1.5, ESP32-H2 v1.3 — Speichergrössen, USB-Einheiten
- ESP32-S3 Series Datasheet v2.2, Abschnitt 2.3.4 — GPIO19 und GPIO20 sind standardmässig USB-Serial-JTAG
- ESP32-C6 Series Datasheet v1.5, Abschnitt 2.3.5 — GPIO12 und GPIO13 sind standardmässig USB-Serial-JTAG
Stand geprüft am 3. August 2026.