Speichern von Einstellungen/Daten im nichtflüchtigen Speicher des Mikrocontrollers (STM32F103)

Ich möchte Werte in einem nichtflüchtigen Speicher speichern können, damit der Mikrocontroller diese Einstellungen beim Start laden kann. Diese Einstellungen können sich zur Laufzeit ändern und es ist wichtig für die Systemfunktionalität, dass diese Einstellungen gespeichert werden.

Soweit ich weiß, ist der Flash der einzige nichtflüchtige Speicher des STM32F103. Ist es möglich, Werte zur Laufzeit irgendwo im Flash zu speichern?

Ich habe auch die Möglichkeit eine SD-Karte und die SDIO- oder SPI-Schnittstelle zu nutzen, um die Werte dort zu speichern, aber wenn möglich wäre es am besten, wenn auf eine SD-Karte verzichtet werden kann.

Die Datenmenge beträgt höchstens einige hundert Bytes.

Ja, Sie können in den Flash schreiben, vorbehaltlich der üblichen Einschränkungen der Löschblockgröße, der begrenzten Lebensdauer des Neuschreibens und der relativ langsamen und kniffligen Operation. ST hat eine App-Notiz, die beschreibt, wie. Darüber hinaus funktionieren einige SWD-basierte Flashing-Tools tatsächlich, indem sie jeden Datenblock in den RAM laden und dann ein kleines Programm ausführen, das diese Daten im Flash speichert.
Ein kleines serielles EEPROM ist manchmal die bessere Lösung. Sie können SPI-, I2C- oder Microwire-Versionen in SOIC-8- und sogar SOT-23-Paketen erhalten.

Antworten (1)

Meines Wissens nach gibt es zwei Möglichkeiten:

  • Verwenden Sie Flash (zur einfacheren Verwendung als EEPROM emuliert) gemäß dieser Appnote
  • Verwenden Sie die Backup-Register (20 Byte batteriegepufferte Register) gemäß den Seiten 67 und 79 des Referenzhandbuchs

Übrigens, wenn Sie einen der größeren Brüder (F2-F4) dieses Chips verschieben, erhalten Sie einen ganzen Teil der RAM-Batterie, die etwa 4k unterstützt, aber es hängt vom tatsächlichen Chip ab

Die dritte Option besteht darin, ein externes SPI (25xx), I2C (24xx), Microwire (93xx) oder ein serielles 1-Wire (11xx) EEPROM anzuschließen. microchip.com/pagehandler/en-us/products/memory/serialEEPROM/…
Auch die hohe Dichte, zB STM32103VC, hat 84 Byte batteriegepufferte Register.