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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.