Ein Gerät soll sich nach dem Ausschalten an die letzte Lautstärke erinnern, eine Kalibrierung behalten, Messwerte über Wochen aufzeichnen oder Schriften und Bilder für ein Display mitbringen. Der Arbeitsspeicher eines Mikrocontrollers vergisst beim Abschalten alles, und sein eingebauter Flash ist oft zu klein oder für das Programm reserviert. Dann kommt ein externer, nicht flüchtiger Speicher auf die Platine: ein EEPROM für einige Kilobyte Einstellungen, ein Flash-Speicher für Megabyte an Daten oder ein FRAM, wenn sehr oft geschrieben wird. Alle drei hängen meist mit nur vier bis sechs Leitungen an I²C oder SPI.
Aufbau und Funktionsweise
EEPROM und Flash speichern jedes Bit als Ladung auf einem Floating Gate: einer Elektrode in einem MOSFET, die rundum von dünnem Oxid isoliert ist. Elektronen, die einmal dort sind, können nicht abfließen und bleiben über viele Jahre. Sie verschieben die Schwellenspannung des Transistors – beim Lesen leitet die Zelle oder eben nicht, das ergibt 0 oder 1.
Zum Schreiben und Löschen legt der Speicher intern erzeugte Spannungen von etwa 10–20 V an. Dann tunneln Elektronen durch das wenige Nanometer dünne Oxid auf das Floating Gate oder herunter (Fowler-Nordheim-Tunneln); beim NOR-Flash werden sie beim Programmieren zusätzlich als „heiße“ Elektronen hineingeschossen. Dass Elektronen eine Barriere durchqueren können, die sie klassisch nicht überwinden dürften, ist ein Effekt der Quantenphysik.
Jeder Schreibvorgang schädigt das Tunneloxid ein wenig. Deshalb ist die Zahl der Schreib- oder Löschzyklen begrenzt – der wichtigste Unterschied zum RAM.
- EEPROM kann jedes Byte einzeln löschen und neu schreiben. Das macht die Zellen aufwendiger, die Speicher bleiben klein (bis etwa 2 Mbit), halten aber typisch eine Million Zyklen aus.
- Flash löscht immer ganze Blöcke, beim SPI-NOR-Flash mindestens einen Sektor von 4 KB. Geschrieben wird seitenweise, typisch 256 Byte. Dafür ist er dicht und billig: 128 Mbit in einem SOIC-8 sind Standard. Etwa 100.000 Löschzyklen pro Sektor sind üblich.
- FRAM (ferroelektrischer Speicher) speichert nicht als Ladung auf einem Gate, sondern in der Polarisation eines Kristalls. Er schreibt ohne Wartezeit und verträgt 1012 Zyklen und mehr – praktisch unbegrenzt. Dafür ist er teurer und nur bis einige Mbit erhältlich.
Schaltzeichen und Anschlüsse
Speicher-ICs erscheinen im Schaltplan als Rechteck mit ihren Anschlussnamen. Die meisten seriellen Speicher sitzen in 8-poligen Gehäusen, deren Belegung innerhalb einer Schnittstelle fast immer gleich ist:
| Pin | I²C-EEPROM (24LC256) | SPI-Flash (W25Q128) |
|---|---|---|
| 1 | A0 (Adresse) | /CS (Chip-Auswahl) |
| 2 | A1 | DO (Daten aus) |
| 3 | A2 | /WP (Schreibschutz) |
| 4 | VSS (Masse) | GND |
| 5 | SDA (Daten) | DI (Daten ein) |
| 6 | SCL (Takt) | CLK |
| 7 | WP (Schreibschutz) | /HOLD oder /RESET |
| 8 | VCC | VCC |
Kennwerte gängiger Typen
| Kennwert | 24LC256 (EEPROM) | W25Q128JV (Flash) | MB85RC256V (FRAM) |
|---|---|---|---|
| Größe | 256 kbit = 32 KB | 128 Mbit = 16 MB | 256 kbit = 32 KB |
| Schnittstelle | I²C, bis 400 kHz | SPI, bis 133 MHz (auch Dual/Quad) | I²C, bis 1 MHz |
| Versorgung | 2,5–5,5 V | 2,7–3,6 V | 2,7–5,5 V |
| Schreibeinheit | Seite 64 Byte | Seite 256 Byte, Löschen 4 KB | Byte, ohne Wartezeit |
| Schreib-/Löschzeit | 5 ms je Seite | Seite 0,4 ms, Sektor 45 ms typ. | keine |
| Zyklen | > 1 Million | 100.000 je Sektor | 1012 |
| Datenerhalt | > 200 Jahre | 20 Jahre | 10 Jahre bei 85 °C |
Durchgerechnet: Lebensdauer und Geschwindigkeit
Zum Vergleich: Der W25Q128 liest im Quad-SPI-Betrieb mit 133 MHz einige zehn Megabyte pro Sekunde und eignet sich deshalb, um Programmcode oder Bilddaten direkt daraus zu laden – viele Controller wie der RP2040 haben gar keinen eigenen Flash und starten aus einem solchen Chip.
Typische Schaltung
Ein I²C-EEPROM braucht kaum Bauteile: einen Abblockkondensator von 100 nF, die Adresspins an Masse oder Versorgung und Pull-up-Widerstände an SDA und SCL, die es auf dem Bus meist ohnehin schon gibt. Die Adresse eines 24LC256 ist binär 1010 A2 A1 A0; mit allen drei Adresspins an Masse liegt sie bei 0x50, und bis zu acht Bausteine teilen sich einen Bus (0x50 bis 0x57). Wie Hexadezimalzahlen funktionieren, steht unter Zahlensysteme.
Die passenden Pull-ups für deine Busgeschwindigkeit und Leitungslänge rechnest du hier aus:
I²C-Pull-up-Widerstände
- Rmin
- 967 Ω
- Rmax
- 3,54 kΩ
- Vorschlag (E12)
- 2,2 kΩ
- Anstiegszeit damit
- 186 ns
- Strom bei Low
- 1,32 mA
Nach NXP UM10204 (Rev. 7, Abschnitt 7.1): Rmin = (VDD − VOL,max) / IOL mit VOL,max = 0,4 V bei IOL = 3 mA, Rmax = tr / (0,8473 · Cb); 0,8473 = ln(0,7/0,3) ist die Zeit von 30 % auf 70 % in Zeitkonstanten. Der Vorschlag ist der größte E12-Wert bis 75 % von Rmax – Reserve für Toleranzen und eine zu knapp geschätzte Buskapazität. Cb schätzt du aus Pin-Kapazitäten (je Gerät etwa 5–10 pF) plus Leitung (grob 50–100 pF je Meter). Die steilste Flanke gehört zu Rmin, die flachste zu Rmax. Grenzen im Fast-mode: tr ≤ 300 ns, Cb ≤ 400 pF.
Ein SPI-Flash braucht dagegen keinen Pull-up auf den Datenleitungen, aber einen Pull-up an /CS, damit der Chip beim Start nicht versehentlich ausgewählt ist. /WP und /HOLD legst du über Widerstände auf High, wenn du sie nicht nutzt. Welche Pegel an den Leitungen gelten, steht unter Logik-Familien.
Bauformen
Serielle Speicher kommen fast immer im SOIC-8 mit 150 oder 208 mil Breite, im TSSOP-8 oder in flachen, beinlosen Gehäusen wie WSON-8 und UDFN-8 von 2 × 3 mm. Größere Flash-Bausteine gibt es auch im SOIC-16 oder als BGA. Mehr zu den Gehäusen unter IC-Gehäuse.
Auswahl und Praxistipps
Für Einstellungen und Kalibrierwerte von wenigen Kilobyte nimmst du ein EEPROM. Für Datenmengen ab einigen hundert Kilobyte, Firmware-Updates, Schriften und Bilder ist SPI-Flash die günstigste Lösung. Wird sehr häufig geschrieben – etwa ein Zählerstand bei jedem Impuls oder ein Zustand bei jedem Abschalten – ist FRAM die bequemste Wahl. Manche Mikrocontroller haben ein internes EEPROM, bei anderen emulieren Bibliotheken es im Programm-Flash.
Häufige Fehler:
- Schreibzyklen vergessen: Software schreibt in einer Schleife dauernd an dieselbe Stelle und verschleißt den Speicher in Tagen. Schreibe nur bei Änderungen und verteile die Daten.
- Seitengrenze überschritten: Schreibst du beim EEPROM über das Ende einer Seite hinaus, springt die Adresse an den Anfang derselben Seite zurück und überschreibt dortige Daten.
- Wartezeit nicht abgewartet: Nach einem Schreibbefehl antwortet das EEPROM einige Millisekunden lang nicht. Frage den Baustein ab, bis er wieder bestätigt.
- Spannungseinbruch beim Schreiben: Fällt die Versorgung mitten im Löschen eines Flash-Sektors weg, sind die Daten des ganzen Sektors kaputt. Plane Prüfsummen und zwei abwechselnd benutzte Kopien ein.
- WP offen: Ein offener Schreibschutzpin kann zufällig High werden; dann scheitern Schreibvorgänge stillschweigend.
Selbsttest
Warum verliert ein Flash-Speicher seine Daten ohne Strom nicht?
Die Elektronen sitzen auf einem rundum isolierten Floating Gate und können nicht abfließen.
Was ist der wichtigste Unterschied zwischen EEPROM und Flash beim Schreiben?
Ein EEPROM schreibt einzelne Bytes neu, Flash muss vorher ganze Blöcke löschen.
Ein Wert wird alle 10 Sekunden an dieselbe Adresse eines EEPROMs mit 1 Million Zyklen geschrieben. Wie lange hält es?
1.000.000 · 10 s = 107 s ≈ 116 Tage.
Welche I²C-Adresse hat ein 24LC256 mit A0 an VCC und A1, A2 an Masse?
1010 001 binär, also 0x51.
Wann ist FRAM die bessere Wahl?
Wenn sehr oft geschrieben wird oder ohne Wartezeit geschrieben werden muss, etwa beim Abschalten.