Forum: Mikrocontroller und Digitale Elektronik EEPROM 24LC64F Verständnisfrage(n)


von marc (Gast)


Lesenswert?

Hallo,

im Datenblatt (24LC64F) gibt es leider keine genaue Angabe über den 
internen Schreibprozess. Weiß jemand ob wiederholtes Schreiben jeweils 
der gleichen Daten z.B. immer 0x55 auf die gleiche Adresse z.B. immer 
0x0000 als mehrfache Schreibzyklen zählt? Oder werden die Zellen dadurch 
nicht abgenutzt?

Bin für jede Hilfe dankbar.

Beste Grüße

Marc

von holger (Gast)


Lesenswert?

>Weiß jemand ob wiederholtes Schreiben jeweils
>der gleichen Daten z.B. immer 0x55 auf die gleiche Adresse z.B. immer
>0x0000 als mehrfache Schreibzyklen zählt?

Ja, jeder Schreibzyklus zählt.

von marc (Gast)


Lesenswert?

Danke für die schnelle Antwort. Bei mir hat sich nun aber eine weitere 
Frage aufgetan. Kann ich diese Zellenabnutzung wirklich für jedes 
einzelne EEPROM-Byte getrennt betrachten, oder betrifft es jedes mal die 
gesamte page? (Der 24LC64F ist intern in pages a 32 bytes organisiert. 
Wer weiß, ob er nicht jedesmal die ganze page löscht und die daten 
vorher im Puffer merged und dann die ganze page schreibt, auch wenn ich 
nur ein bestimmtes Byte addressiere?)

Gruß

marc

von Michael U. (amiga)


Lesenswert?

Hallo,

Deine letzte Annahme ist richtig. Intern wird eine Page in einen Puffer 
gelesen, das Byte modifiziert, die Page gelöscht und der Puffer 
geschrieben.

Gelesen wird vermutlich auch meist so, das die ganze Page gelesen wird 
und das Byte aus dem Puffer geholt wird, einfach, weil die 
Ablaufsteueerung dann nur wenige Zuständen können muß. Page-Read ist 
dann meist schneller, weil da die Page zwar auch komplett in den Puffer 
geholt wird (gleicher Ablauf), die Daten aber einfach gleich parallel 
auf die ausgegeben werden. Das erfordert dann nur einen Mux zusätzlich 
und spart sicher Silizium gegenüber völlig anderen Abläufen.

Zumindest würde ich es wohl so anlegen, wenn ich einen EEPORM basteln 
wollte...

Gruß aus Berlin
Michael

von marc (Gast)


Lesenswert?

Danke für die ausführliche Antwort.

So eine Tatsache finde ich jedoch ohne genauere Angaben Seitens 
Microchip im Datenblatt (dort steht wirklich nur so lala "More than 1 
Million Erase/Write Cycles" @ 25°C bzw. man solle das 
TotalEndurance-Tool für genauere Vorhersagen nutzen) fatal. Wenn ich es 
richtig verstanden habe spielt es keine Rolle, ob ich 500.000 mal auf 
Addr. 0x0000 und 500.000 mal auf Addr. 0x0001 schreibe oder ich gleich 
1.000.000 mal auf Addr. 0x0000 schreibe. Für meine Anwendung reduziert 
sich dadurch der verfügbare EEPROM-Speicher um Faktor 32. Statt 8k --> 
256 Bytes. Na super. Ist das wirklich so?

Gruß

Marc

von 6A66 (Gast)


Lesenswert?

marc schrieb:
> Na super. Ist das wirklich so?

Ich denke das wird Dir nur der Hersteller beantworten können - auch wenn 
er das ganz ungern tun wird.
Ich gehe jedenfalls für unsere Applikationen davon aus - heißt: page 
cachen und erst wenn nötig schreiben.

Grüße

von Wilhelm F. (Gast)


Lesenswert?

marc schrieb:

> Weiß jemand ob wiederholtes Schreiben jeweils
> der gleichen Daten z.B. immer 0x55 auf die gleiche Adresse z.B. immer
> 0x0000 als mehrfache Schreibzyklen zählt? Oder werden die Zellen dadurch
> nicht abgenutzt?

Man kann da einen Trick in seiner Software nutzen: Und zwar, wenn das 
EEPROM mit einem Wert beschrieben werden soll, prüft man vorher, ob 
nicht schon der selbe Wert in der Adresse drin steht. Steht der selbe 
Wert schon drin, spart man sich das Schreiben.

Es gibt auch noch weitere Algorithmen, die das EEPROM mit ständig 
aufwärts zählenden Adressen beschreiben. Bis die Endadresse erreicht 
ist. Dann beginnt es wieder bei Null. Das sorgt wenigstens für eine 
gleichmäßigere Abnutzung aller Zellen. Sonst sind überwiegend nur die 
unteren Adressen abgenutzt.

Ja, ich sah schon industrielle Schaltungen, wo das EEPROM Schrott wurde.

von Georg G. (df2au)


Lesenswert?

Wenn du ein EEPROM richtig auslutschen willst, kommst du nicht umhin, 
"wear leveling" zu machen. Für Grundlagen: 
http://en.wikipedia.org/wiki/Wear_leveling

von Klaus (Gast)


Lesenswert?

marc schrieb:
> Wenn ich es
> richtig verstanden habe spielt es keine Rolle, ob ich 500.000 mal auf
> Addr. 0x0000 und 500.000 mal auf Addr. 0x0001 schreibe oder ich gleich
> 1.000.000 mal auf Addr. 0x0000 schreibe. Für meine Anwendung reduziert
> sich dadurch der verfügbare EEPROM-Speicher um Faktor 32. Statt 8k -->
> 256 Bytes. Na super. Ist das wirklich so?

Warum willst du 1 Milion mal das gleiche an die gleiche Adresse 
schreiben? Lies doch einfach was drin steht, und wenn das schon richtig 
ist, kneif dir das Schreiben.

MfG Klaus

von marc (Gast)


Lesenswert?

Danke für die Antworten.

@Klaus. Das war nur ein Zahlenspiel um den Sachverhalt wiederzuspiegeln. 
Das ist mir schon klar. Es liegt ja auf der Hand, dass man vorher liest 
und vergleicht. Allerdings kostet lesen über einen 400 KHz I2C Bus Zeit, 
steigert die SW-Komplexität, Test-Komplexität etc. Würde ein derartiger 
Datenvergleich innerhalb des EEPROM Bausteins stattfinden, worauf meine 
erste Frage abzielte, könnte ich mir dies sparen.

Ach seufz, wieso hat heute nicht bereits jeder µC internes FRAM ohne 
Mehrkosten...

von Klaus (Gast)


Lesenswert?

marc schrieb:
> Allerdings kostet lesen über einen 400 KHz I2C Bus Zeit,

Aber viiiiiiiel weniger als schreiben. Und da schreiben so lange dauert, 
gibts ja den page mode.

marc schrieb:
> Würde ein derartiger
> Datenvergleich innerhalb des EEPROM Bausteins stattfinden, worauf meine
> erste Frage abzielte, könnte ich mir dies sparen.

Das Konzept dieser EEPROMS ist steinalt, war wohl einer der ersten I2C 
Bausteine.

MfG Klaus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.