STM32F103 Flashzelle öfters beschreibbar vor dem löschen?

OP #6335116
Lesenswert?

Können die Bits aus dem Flash Speicher vom STM32F103 mehrfach 
hintereinander programmiert werden? Also solange die Bits von '1' auf 
'0' programmiert werden?

Laut meiner Erfahrung nein.

Das geht dann nur, wenn die gesamte Page gelöscht wird.

Also wird dann wohl intern noch ein weiteres Bit pro Flash Zelle 
programmiert, welches anzeigt, dass die jeweilige Zelle bereits 
beschrieben worden ist.

Ich dachte die Flash Zellen verhalten sich wie (E)Eprom Zellen.

Auch geht die Programmierung nur zu jeweils 16 Bit (half-word).
Ein Byte alleine programmieren geht nicht.

Ich hatte eine Routine zum Byte Programmieren geschrieben, welches 
jeweils die andere Hälfte auf den Wert $FF lässt. Aber wie oben 
beschrieben lassen sich die half-word Zellen leider nur einmal 
programmieren.
Gast #6335202
Lesenswert?

Stefan ⛄ F. schrieb:
> A. B. schrieb:
>> Es ist ungemein hilfreich, mal in der Doku nachzulesen... PM0075
>
> Da habe ich gerade aus Neugier schon hinein geschaut, aber keine
> Erklärung zur Frage des TO gefunden.

Es waren zwei Fragen. Fast hätte ich jetzt gesagt "Wer lesen kann, ist 
klar im Vorteil":

"In this mode the CPU programs the main Flash memory by performing 
standard half-word write operations. The PG bit in the FLASH_CR register 
must be set. 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"

Nachprogrammieren, also weitere Bits auf 0 programmieren geht also 
nicht.
Das war Frage 1.

"The main Flash memory can be programmed 16 bits at a time. The program 
operation is started when the CPU writes a half-word into a main Flash 
memory address with the PG bit of the FLASH_CR register set. Any attempt 
to write data that are not half-word long will result in a bus error 
response from the FPEC."

Ein einzelnes Byte programmieren geht also auch nicht. Das war Frage 2.

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