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
>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.
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
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
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
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
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.
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
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...
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
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.