STM32 Flash als EEPROM schreibzyklen

OP #4133443
Lesenswert?

Hallo zusammen

Ich möchte die EEPROM Emulation beim STM32 verwenden.
Dabei wird ja in das Flash geschrieben.

Es handelt sich bei mir um 2500bytes welche nach und nach während 
mindestens 1000 Stunden geschrieben werden.

Also nach 1000h oder mehr wurde das letzte der 2500bytes geschrieben.


Wie oft kann ich diese 2500bytes eurer Meinung nach schreiben, bevor ich 
mit Fehlern rechnen muss?

Wenn dies 50 mal machbar ist, reicht dies mehr als genug.


Danke schonmal
#4133630
Lesenswert?

Kommt auch drauf an, welchen STM32 du verwenden möchtest.

Es kommt auch auf den Einsatz an, es gibt endlose Möglichkeiten, wie man 
2,5kByte Daten persistent speichern kann.

Der STM32F4 hat "core coupled memory", der mit einer Backup Batterie 
gestützt werden kann. Auf diese Weise arbeitet dieses wie ein EEPROM.

Der STM32F4 hat sein Flash in Bänke aufgeteilt, deren Größe von 16kByte 
bis 128kByte reichen. Du kannst also deine Daten in eine solche (frisch 
gelöschte) Bank schreiben und nach dem Auslesen der Daten diese Bank 
wieder löschen. Dann brauchst du keine EEPROM Emulation und kannst dich 
auf die Werte des Datenblattes berufen.
(etwas verständnis für linkerfiles vorausgesetzt)
(Flash memory endurance and data retention bei einem STM32F407VG: 
10kcycles, 10years)

Verwendest du eine EEPROM Emulation, so kann sich das deutlich 
verringern. Je nach dem wie die Bibliothek implementiert ist, werden 
daten mehrfach abgelegt und protokolloverhead hinzugefügt.
Gast #4133643
Lesenswert?

Mit der STM Eeprom Emulations Library sollte das kein Problem sein. Du 
musst mit dieser lib nicht bei jedem Schreibzyklus löschen, sondern nur 
bei einem Überlauf des virtuellen Eeprom. Wenn Du in dem Eeprom 2500 
Einträge hast, und 10.000 * reinschreibst, dann löscht Du jede der pages 
4 mal.

Das einzige Problem bei der Eeprom-Flash-Emulation:
Während dem Löschen einer Flash-page ist kein Zugriff auf den restlichen 
Flash-Speicher möglich, das heisst, die CPU wird ein paar ms komplett 
stehen (inkl. Interrupts). (Wenn das ein Problem ist, dann kann ein STM 
mit 2 Flash-Memory-Banks verwendet werden, oder zeitkritische Routinen 
ins RAM verlegt werden).

Viele Grüße, Stefan

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