M25P16 Flash, Verständnisfrage

OP #4553914
Lesenswert?

Hallo Zusammen,

ich versuche gerade zu verstehen wie ein Flash-ROM funktioniert und bin 
etwas verwirrt. Konkret habe ich hier den M25P26 über SPI an einem 
STM32F103 hängen.
Mittlerweile habe ich verstanden, dass der Speicher in Sektoren und 
Pages aufgeteilt ist. Und das ich nur Pages beim Beschreiben adressieren 
kann.
Aber ich finde keine Möglichkeit einen Wert im Speicher zu ändern, ohne 
dabei gleich einen ganzen Sektor zu löschen. Aber wenn ich nur einen 
Wert anpassen möchte, müsste ich dafür doch den ganzen Sektor 
zwischenspeichern.
Ist das richtig, oder habe ich etwas übersehen?

Wenn das tatsächlich so ist, gibt es alternativen um einige KB nicht 
flüchtig zu speichern?

Danke und Gruß
Rainer
#4553936
Lesenswert?

Einen Wert im Flash Speicher kann man auf drei Arten ändern:

1. Sektor auslesen, Daten ändern, Sektor löschen, Daten zurückschreiben
2. Sektor/Page in anderen Sektor/Page kopieren und dabei Änderungen 
vornehmen
3. Unter Berücksichtigung dass man Bits von 1 auf 0 programmieren kann: 
Page lesen, ändern, zurückschreiben.

Löschen bedeutet vereinfacht dass alle Bits wieder auf 1 gesetzt werden 
(abhängig von der Flash Technologie). Man kann somit immer von 1 auf 0 
programmieren ohne löschen zu müssen.
OP #4553965
Lesenswert?

Schluckauf schrieb:
> 24C64
Danke, werde ich mir auch anschauen. Glaube ich habe da so etwas in der 
Kiste liegen.

Juergen P. schrieb:
> 3. Unter Berücksichtigung dass man Bits von 1 auf 0 programmieren kann:
> Page lesen, ändern, zurückschreiben.
Das klingt schon mal Interessant, aber wie das funktioniert verstehe ich 
nicht.

Ich habe bemerkt, dass wenn ich einen Wert einfach zu überschreiben 
versuche an der Stelle im Flash plötzlich einfach eine 0 auftaucht.
 Also z.B. ich schreibe in die Page 0 den Wert 2 und schreibe 
anschließend in die Page den Wert 253, dann wird aus der 2 nicht die 253 
sondern eine 0. Diese 0 kann ich aber nicht mehr ändern.

Kann mir das jemand vielleicht erklären?

Danke und Gruß
Rainer

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren