Hallo, wenn man den Flash löscht, steht als default-Value 0xFF in jeder Zelle (alle Bits gesetzt). Jetzt kann ich meinen gewünschten Wert z.B. 0x0F reinschreiben (die ersten 4 Bits werden gelöscht). Jetzt meine Frage: Ist dieses 1 Byte im Flash nun bis zum nächsten Erase nicht mehr veränderbar (also nach einem Erase nur 1 Schreibzugriff) oder kann ich weiterhin Bits löschen z.B. 0x03 schreiben, dann 0x01, dann 0x00? (Also bis zu 8 Schreibzugriffe wenn ich jeweils nur 1 Bit lösche). mfg
Hallo Dies sollte bei einem STM32 möglich sein. Das Flash-Programming-Manual sagt dazu: Successive write operations are possible without the need of an erase operation when changing bits from ‘1’ to ‘0’. Im Zweifelsfalle sollte man aber immer das entsprechende Manual konsultieren. In den NXP Kinetis-Referenz-Manuals z.B. steht etwas anderes: Re-programming of existing 0s to 0 is not allowed as this overstresses the device. Worin genau die technischen Unterschiede zwischen den Flash-Controllern dieser Prozessoren bestehen, weiss ich auch nicht. Gruss, Christian
Felix F. schrieb: > Ist dieses 1 Byte im Flash nun bis zum nächsten Erase nicht mehr > veränderbar Kommt schwerstens auf den konkreten µC an. Der Flash wird bei jedem Schreibzugriff etwas gestresst. Mitunter findet man Angaben im Datenblatt, NordicSemi NRF52x erlaubt beispielsweise nur zweifaches Überschreiben - danach muss die Page gelöscht werden. Übrigens findet das Schreiben des Flash nicht unbedingt byte-weise statt. Moderne µC Flash Blöcke sind "breiter".
Nach der üblichen Einleitung "RTF ..." ein klares "Jein": Aus PM0075 Programming manual STM32F10xxx Flash memory microcontrollers: "Standard programming ... FPEC preliminarily reads the value at the addressed main Flash memory location and checks that it has been erased. If not, the program operation is skipped and a warning is issued by the PGERR bit in FLASH_SR register ..." Dagegen aus RM0431 STM32F72xxx and STM32F73xxx: "Note: Successive write operations are possible without the need of an erase operation when changing bits from ‘1’ to ‘0’. Writing ‘1’ requires a Flash memory erase operation." Das ist wohl so zu verstehen, dass einzelne Bits nachprogrammiert werden können. Abgesehen davon jedoch: Einige (neuere!!!) Varianten haben beim Flash noch ECC, da scheidet dieses "Nachprogrammieren" sowieso aus. Wenn man den Controller also mal wechseln können möchte, sollte man auf solche Sperenzchen verzichten.
Ich hatte das bei mir irgendwann mal ausprobiert (STM32F103CBT6) und bei dem konnte ich immer weiter Bits auf Null setzen. Also - Versuch macht klug.
Bei mir gehts speziell um einen F4. Hab jetzt auch im manual die note gefunden und hier steht, dass es funktioniert. mfg
Dieter schrieb: > Ich hatte das bei mir irgendwann mal ausprobiert (STM32F103CBT6) und bei > dem konnte ich immer weiter Bits auf Null setzen. > > Also - Versuch macht klug. Kann sein dass es einige Male funktioniert, allerdings verträgt das nicht jedes Flash auf Dauer. Das Flash kann dabei Schaden nehmen. Zum Basteln kein Problem, aber in Serienfertigung lieber das Datenblatt und / oder den FAE konsultieren.
Felix F. schrieb: > Bei mir gehts speziell um einen F4. Hab jetzt auch im manual die note > gefunden und hier steht, dass es funktioniert. Es funktioniert auch. Habe es kürzlich mit einem F446 getestet, da es mich selbst interessiert hat.
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.