Forum: Mikrocontroller und Digitale Elektronik Betriebsstundenzähler STM32F205 ins Flash speichern?


von Hans D. (da_hans)


Lesenswert?

Hallo zusammen,

ich würde gerne ein paar Betriebsstundenzähler realisieren. (34 Stück 
für Lebensdauertests)

Als µC muss ich leider den STM32F205 verwenden. Dieser hat jedoch kein 
EEPROM sodass ich den Flash (128kbyte) benutzen muss.

Von der Genauigkeit des Stundenzählers ist die Vorgabe von 6 Minuten--> 
10 Speichervorgänge je Stunde. Das macht pro Jahr dann 87.000 
Schreibzugriffe.

Leider konnte ich im Datenblatt die maximalen Schreibzugriffe des 
STM32F205 nicht finden; jedoch wird das im Internet mit maximal 10.000 
angegeben.

Wie würdet Ihr hier verfahren?

Einen Zähler einrichten der die Zugriffe zählt und nach 10k auf die 
nächste Speicherstelle schaltet oder die Zählerstände abwechselnd auf 
andere Speicherstellen schreiben.

Gibt es eine Methode um eine beschädigte Speicherstelle zu 
identifizieren?

von Rainer M. (excogitator)


Lesenswert?

Hallo Hans,

kennst du schon die Appnote AN2594 von ST?
http://www.st.com/web/en/resource/technical/document/application_note/CD00165693.pdf
Vielleicht hilft dir das darin beschrieben Verfahren bezüglich EEPROM 
emulation. Ist zwar für die STM32F10x-Serie, sollte aber auch für die 
STM32F20x-Serie anwendbar sein.

Gruß
Rainer

von Hans D. (da_hans)


Lesenswert?

Hallo Rainer,

ich werde das so machen, das hört sich echt gut an.

Jedoch ergibt sich damit jetzt ein kleines weiteres Problem.
Ich bekomme zur Laufzeit auch noch Daten geschickt die ich auch ablegen 
will. Jedoch ist mir nicht bekannt welcher Typ und welche Länge. Wenn 
ich die AN richtig verstanden habe benötige ich ja eine Variable sodass 
ich die Daten mit virtueller Adresse speichern kann. Ich kann aber doch 
schlecht für alles ein Register definieren nur damit ich das ins Flash 
speichern kann. Oder sehe ich das falsch?

von Dieter (Gast)


Lesenswert?

Moin,

ich habe bezüglich der R/W Problematik ein EEProm genommen und nicht nur 
auf einer Stelle geschrieben, sondern immer wieder eine neue 
Speicherstelle geschrieben. D.h. für 10 Min Betriebsdauer habe ich einen 
Counter (0,1,2,3...) n der Speicherstelle erhöht. Solange bis alle 
Speicherstellen mit 1 belegt waren, dann wieder an die erste 
Speicherstelle und diese auf 2 inkrementiert, etc. Erfordert beim 
Einschalten oder Auslesen natürlich ein par µs Laufzeit um die aktuelle 
Speicherstelle zu finden.

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
Noch kein Account? Hier anmelden.