Forum: Mikrocontroller und Digitale Elektronik STM32F103 Flashzelle öfters beschreibbar vor dem löschen?


von Rainer S. (rsonline)


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.

von A. B. (Gast)


Lesenswert?

Es ist ungemein hilfreich, mal in der Doku nachzulesen (dazu ist die 
doch wohl da, oder?!), statt zu spekulieren:

PM0075, 2.3.3 Standard Programming

von A. S. (Gast)


Lesenswert?

Rainer S. schrieb:
> Ich dachte die Flash Zellen verhalten sich wie (E)Eprom Zellen.

Eigentlich ist das löschen mehrere Zellen auf einmal die Eigenschaft/der 
Vorteil von flash gegenüber eeprom. Das flash und eeprom sich quasi von 
beiden Seiten annähern, verwischt die Unterscheidung.

von Stefan F. (Gast)


Lesenswert?

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.

von A. B. (Gast)


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.

von Stefan F. (Gast)


Lesenswert?

Super, du hast die relevanten Stellen in der Doku gefunden. Dann haben 
wir ja jetzt die Erklärung. Danke

von Rainer S. (rsonline)


Lesenswert?

Vielen Dank A. B.
Ich hatte die Doku auch, aber wohl nicht so genau gelesen.

von olegk (Gast)


Lesenswert?

weitere zwei Bytes aber schon!

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.