Hallo zusammen, ich schreibe eine Applikation für den STM32F103xC. Ich möchte auch gerne irgendwelche Kalibrationdaten,Betriebsstunden dauerhaft speichern und auch während des Betriebs ändern , quasi eine EEProm Funktionalität. Dazu habe ich mir die AppNote AN2594 von ST durchgelesen und auch implementiert. Soweit so gut ich kann mittels der Routinen Daten speichern und auslesen, mein Problem ist aber wenn ich dazu zyklische Daten ins EEprom speichere (Betriebsstunde ect.) bsp stündlich wird relativ schnell das Ende einer Page erreicht. Die EEprom Routine kopiert dann die letzten beiden Daten Words in die neue Page und löscht die alte meine anderen Daten sind dann futsch...Das liegt wahrscheinlich daran das die Daten nacheinander angehangen werden und nur über die Virtuelle Adresse indefizierbar bleiben. Momentan sehe ich mich gezwungen ein externes EEprom zu verwenden da ich mit der bisherigen Lösung keine Daten dauerhaft speichern kann wenn das Ende der Page erreicht wird. Sieht hier eventuell jemand einen Ausweg doch den internen Daten Flash zu verwenden? Danke & Grüße
Du musst dringend mit deiner EEprom Routine sprechen, damit sie tut was du willst....
Habe mir die AppNote auch angesehen, für mehrere Variablen muß sie erweitert werden. Am besten alles in eine Struct integrieren, die eine 2er Potenz als Größe hat mit internem Keyword zum auffinden. Gruß Ingo
Ich habe mich damit auch rumgeschlagen und bin zu dem Schluss gekommen, das ein externes EEPROM das beste ist. Mir ist es sowieso nicht ganz geheuer, im laufenden Betrieb eine ganze Page des Flash zu opfern und zweitens ist die Lebensdauer des Flash deutlich mehr begrenzt, als die garantierten 1.000.000 Schreibzyklen moderner EEPROMs.
Benson schrieb: > Hallo zusammen, > > ... die AppNote AN2594 von ST durchgelesen und auch > implementiert. Soweit so gut ... > > Danke & Grüße Hey, die AppNote hab ich auch gefunden allerdings finde ich das Demonstration Programm nicht. Kann mir da jemand den Link geben oder eventuell das Demoprogramm hoch laden? Wäre super nett. Gruß Jonas
An Stelle von externem EEPROM ist oft auch FRAM interessant, mit faktisch unbegrenzter Anzahl Schreibvorgänge und kurzer Schreibzeit.
:
Bearbeitet durch User
Matthias Sch. schrieb: > Das müsste das hier sein. Habs dir mal als ZIP Archiv angehängt. Wow das war schnell!! Super Danke! A. K. schrieb: > ... oft auch FRAM interessant ... Was ist den FRAM? Der ist aber nicht im STM32F1 verbaut oder? Bin nur auf eine schnelle Lösung einen Zählwert bei Spannungsverlust zwischen zu speichern. Ist für eine Evaluierung nötig von daher wird das Programm dann auch nur ein paar mal genutzt. Gruß Jonas
Jonas Damhuis schrieb: > Was ist den FRAM? Eine externe Alternative zu EEPROM. Persistentes RAM via SPI|I2C, z.B.: http://de.farnell.com/ramtron/fm25cl64-g/fram-seriell-spi-3v-64k-smd-25cl64/dp/1210796 > Ist für eine Evaluierung nötig von daher wird das Programm > dann auch nur ein paar mal genutzt. Das klingt nicht so, als ob du dir Sorgen wegen begrenzter Lebensdauer machen müsstest. Dafür sollte es eine EEPROM Emulation auch tun. Es zwingt dich niemand dazu, das unveränderte Originalprogramm zu verwenden, wenn dessen Verhalten nicht optimal ist. In einer Evaluationsphase kann es ggf. auch sinnvoll sein, einen Typ mit mehr Flash einzusetzen, um für so etwas genug Platz zu haben. Die Lebensdauer steigt mit der Anzahl Pages, die dafür zur Verfügung stehen.
:
Bearbeitet durch User
Ja ganz genau Lebensdauer ist absolut nicht von Interesse. Es soll nur für einen Test, der eventuell ein paar mal bzw. mit Glück auch nur einmal durchgeführt wird, eine 32 Bit Variable am Ende des Testes abgespeichert werden. diese soll dann nach Spannungsverlust wieder ausgelesen werden. Daher denke ich das die Emulationssoftware absolut ausreichend ist.
♪Geist schrieb: > Hast du die Suche nicht benutzt? Hast du nicht aufs Datum geschaut? Ist alles schon längst erledigt.
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.