STM32F429: Flash-Löschen/Programmieren bringt seltsame Fehler

Gast #5887780
Hallo zusammen,

ich habe eine STM32-Firmware für einem STM32L4R5ZI geschrieben, die auf 
Flash-Bank1 läuft, und Flash-Bank2 löschen/programmieren kann. 
Funktioniert auf dem STM32L4R5ZI einwandfrei.
Jetzt wollte ich diese Firmware auf einen STM32F429ZI portieren, krieg 
es aber nicht zum Laufen. Ich bekomme sowohl beim Löschen als auch beim 
Programmieren von Bank2 immer die Fehlerflags "PGSERR" (Programming 
Sequence error) und/oder "PGPERR" (Programming Parallelism error) 
gesetzt, und kann mir nicht erklären, warum.

Beispielcode:
1
FLASH_EraseInitTypeDef EraseInit;
2
EraseInit.TypeErase   = FLASH_TYPEERASE_MASSERASE;
3
EraseInit.Banks   = FLASH_BANK_2;
4
EraseInit.Sector  = 0;
5
EraseInit.NbSectors  = 0;
6
EraseInit.VoltageRange   = FLASH_VOLTAGE_RANGE_3;
7
uint32_t SectorError = 0;
8
HAL_StatusTypeDef status0 = HAL_FLASH_Unlock();
9
uint32_t error0 = HAL_FLASH_GetError();
10
HAL_StatusTypeDef status1 = HAL_FLASHEx_Erase(&EraseInit, &SectorError);
11
uint32_t error1 = HAL_FLASH_GetError();
12
HAL_StatusTypeDef status2 = HAL_FLASH_Lock();
- HAL_FLASH_Unlock() gibt HAL_OK zurück, FlashError = 0
- HAL_FLASHEx_Erase() gibt HAL_ERROR zurück, FlashError = 2 (PGSERR)
- HAL_FLASH_Lock() gibt wieder HAL_OK zurück

Habe FLASH_VOLTAGE_RANGE 1, 2 und 3 probiert, kein Unterschied.

In den OptionBytes ist keine Read- oder WriteProtection gesetzt.
Der STM32F429ZI ist nach meinem Verständnis immer im DualBank 
konfiguriert, jedenfalls kann ich in OptionBytes nichts einstellen 
(anders als beim STM32L4R5ZI).

Weiß jemand weiter?
Gast #5889500
Falls es jemanden interessiert:
Ich habe festgestellt, dass diese Fehlerflags (PGPERR und PGSERR) 
anscheinend unberechtigerweise gesetzt werden.
Wenn ich diese Flags einfach ignoriere und lösche, funktioniert alles 
einwandfrei, d.h. das Flash wird korrekt gelöscht und auch programmiert. 
Der neue Flash-Inhalt ist danach korrekt.
Gast #5889622
Frank Roggel schrieb:
> Ich habe festgestellt, dass diese Fehlerflags (PGPERR und PGSERR)
> anscheinend unberechtigerweise gesetzt werden.
> Wenn ich diese Flags einfach ignoriere und lösche, funktioniert alles
> einwandfrei

Dann schau doch mal, ob du dazu etwas im Errata findest.

Ich bin auf ein ähnliches Problem bei einer I²C Schnittstelle gestoßen, 
das war im Errata beschrieben.

Normalerweise denkt man ja, dass diese Bugs nur in ganz speziellen 
Konstellationen auftreten, von denen man selbst nur selten betroffen 
ist. Aber ich gehöre scheinbar zu der Sorte Mensch, deren Weg mit 
Fettnäpfchen regelrecht gepflastert ist. Was schief gehen kann, geht 
auch schief. Glück haben immer nur die anderen. Kennt Ihr das Gefühl?
Gast #5889727
Stefanus F. schrieb:
> Dann schau doch mal, ob du dazu etwas im Errata findest.

Ins Errata Sheet hatte ich als erstes geschaut und nichts dazu gefunden. 
Deswegen war ich auch sehr skeptisch, ob es wirklich sein kann, das 
diese Fehlerflags unberechtigterweise gesetzt werden sollten (das müßte 
doch irgendjemandem aufgefallen sein?!). Aber nach einer Woche 
Trial-and-Error scheint dies die einzige plausible Erklärung...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.