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
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.
:
Bearbeitet durch User
>Das sind I2C EPROMs. Der TO redet aber von SPI .....
Dann eben SPI FRAM. FM25... oder so ähnlich.
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
Jede Flashzelle (=Bit) ist wie ein Kondensator der durch programmieren entladen (0) und durchs löschen geladen (1) wird. Dein Beispiel: Wert 2 = 00000010 Wert 253 = 11111101 Regel: von 1 auf 0 ohne löschen möglich Ergebnis von 253 auf Inhalt 2 programmieren: 00000000
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.