<style>[reveal]{opacity:1 !important;transform:none !important}</style>

Speicher-ICs: EEPROM und Flash

Wie EEPROM, Flash und FRAM Daten ohne Strom halten, wie oft du sie beschreiben darfst und wie du ein I²C-EEPROM wie den 24LC256 richtig anschließt.

7 Min. LesezeitSpeicher-ICEEPROMFlashSPI-Flash

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.

Schnittbild einer Floating-Gate-Speicherzelle: Steuer-Gate oben, darunter das isolierte Floating Gate mit eingeschlossenen Elektronen, dünnes Tunneloxid, Source und Drain im Silizium
Die Ladung auf dem isolierten Floating Gate bestimmt, ob die Zelle als 0 oder 1 gelesen wird.

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:

PinI²C-EEPROM (24LC256)SPI-Flash (W25Q128)
1A0 (Adresse)/CS (Chip-Auswahl)
2A1DO (Daten aus)
3A2/WP (Schreibschutz)
4VSS (Masse)GND
5SDA (Daten)DI (Daten ein)
6SCL (Takt)CLK
7WP (Schreibschutz)/HOLD oder /RESET
8VCCVCC

Kennwerte gängiger Typen

Kennwert24LC256 (EEPROM)W25Q128JV (Flash)MB85RC256V (FRAM)
Größe256 kbit = 32 KB128 Mbit = 16 MB256 kbit = 32 KB
SchnittstelleI²C, bis 400 kHzSPI, bis 133 MHz (auch Dual/Quad)I²C, bis 1 MHz
Versorgung2,5–5,5 V2,7–3,6 V2,7–5,5 V
SchreibeinheitSeite 64 ByteSeite 256 Byte, Löschen 4 KBByte, ohne Wartezeit
Schreib-/Löschzeit5 ms je SeiteSeite 0,4 ms, Sektor 45 ms typ.keine
Zyklen> 1 Million100.000 je Sektor1012
Datenerhalt> 200 Jahre20 Jahre10 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.

I2C-EEPROM 24LC256 am Mikrocontroller: A0 bis A2 und WP an Masse, Pull-ups 4,7 kΩ an SDA und SCL nach 3,3 V, 100 nF an VCC
A0 bis A2 an Masse ergeben die Adresse 0x50; WP an Masse gibt das Schreiben frei.

Die passenden Pull-ups für deine Busgeschwindigkeit und Leitungslänge rechnest du hier aus:

Rechner

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
3,3 V70 %30 %00tr ≤ 300 ns300 nsZeit ab 30 % von VDD967 Ω2,2 kΩ3,54 kΩ

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.

Speicher-ICs in typischen Gehäusen: SOIC-8, TSSOP-8 und WSON-8
Serielle Speicher sitzen fast immer in kleinen 8-poligen Gehäusen.

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.