FlashStorage_STM32F1 Library

FlashStorage_STM32F1 library GitHub release
arduino-library-badge

Why do we need this FlashStorage_STM32F1 library

Features

The FlashStorage_STM32F1 library, inspired by Cristian Maglie's FlashStorage, provides a convenient way to store and retrieve user's data using emulated-EEPROM, from the non-volatile flash memory of STM32F1/F3, including non-genuine CH32F103xx, CS32F103xx, etc. boards.

The flash memory, generally used to store the firmware code, can also be used to store / retrieve more user's data and faster than from EEPROM. Thanks to the buffered data writing and reading, the flash access time is greatly reduced to increase the life of the flash.

Currently, the library supports both new STM32 core v2.0.0 and previous STM32 core v1.9.0


Currently supported Boards

  1. STM32F1/F3 boards with / without integrated EEPROM

STM32F1xx

  • NUCLEO_F103RB, DISCO_F100RB
  • BLUEPILL_F103C6, BLUEPILL_F103C8, BLUEPILL_F103CB
  • BLACKPILL_F103C8, BLACKPILL_F103CB
  • Generic STM32F1, STM32F3
  • VCCGND_F103ZET6_MINI, VCCGND_F103ZET6,
  • HY_TINYSTM103TB, MAPLEMINI_F103CB
  • BLUEBUTTON_F103R8T, BLUEBUTTON_F103RBT, BLUEBUTTON_F103RCT, BLUEBUTTON_F103RET
  • GENERIC_F100C4TX, GENERIC_F100C8TX, GENERIC_F100CBTX
  • GENERIC_F103C4TX, GENERIC_F103C6TX, GENERIC_F103C6UX, GENERIC_F103C8TX, GENERIC_F103CBTX, GENERIC_F103CBUX
  • GENERIC_F100R8TX, GENERIC_F100RBTX
  • GENERIC_F103R4HX, GENERIC_F103R6HX, GENERIC_F103R4TX, GENERIC_F103R6TX, GENERIC_F103R8HX, GENERIC_F103RBHX, GENERIC_F103R8TX
  • GENERIC_F103RBTX, GENERIC_F103RCTX, GENERIC_F103RDTX, GENERIC_F103RETX, GENERIC_F103RCYX, GENERIC_F103RDYX, GENERIC_F103REYX
  • GENERIC_F103RFTX, GENERIC_F103RGTX
  • GENERIC_F103T4UX, GENERIC_F103T6UX, GENERIC_F103T8UX, GENERIC_F103TBUX
  • GENERIC_F103V8HX, GENERIC_F103VBHX, GENERIC_F103V8TX, GENERIC_F103VBTX, GENERIC_F103VBIX, GENERIC_F103VCHX, GENERIC_F103VDHX
  • GENERIC_F103VEHX, GENERIC_F103VCTX, GENERIC_F103VDTX, GENERIC_F103VETX, GENERIC_F103VFTX, GENERIC_F103VGTX,
  • GENERIC_F103ZCHX, GENERIC_F103ZDHX, GENERIC_F103ZEHX, GENERIC_F103ZCTX, GENERIC_F103ZDTX, GENERIC_F103ZETX, GENERIC_F103ZFHX,
  • GENERIC_F103ZGHX, GENERIC_F103ZFTX, GENERIC_F103ZGTX
  • MALYANM200_F103CB, AFROFLIGHT_F103CB

STM32F3xx

  • NUCLEO_F302R8, NUCLEO_F303RE, NUCLEO_F303K8, DISCO_F303VC
  • BLACKPILL_F303CC, OLIMEXINO_STM32F3
  • GENERIC_F302R6TX, GENERIC_F302R8TX, GENERIC_F303RBTX, GENERIC_F303RCTX, GENERIC_F303RDTX, GENERIC_F303RETX
  • GENERIC_F303CBTX, GENERIC_F303CCTX
  • GENERIC_F303K6TX, GENERIC_F303K8TX
  • GENERIC_F303VBTX, GENERIC_F303VCTX
  • GENERIC_F334K4TX, GENERIC_F334K6TX, GENERIC_F334K8TX
  • SPARKY_F303CC


Changelog

Releases v1.0.1

  1. Fix mistake in initial releases

Initial Releases v1.0.0

  1. Initial release to support STM32F1/F3 boards with / without integrated EEPROM
  2. Tested using genuine STM32F103, or CH32F103/CS32F103 boards with 32KB, 64KB or 128KB Flash Size
  3. Configurable Flash Sector to use
  4. FlashStorage size is 1024 bytes (including 1-byte valid and 4-byte signature)

maybe now you have the know-how to add support for STM32F1 to ArduinoOTA library's InternalStorage?

Thanks @Juraj

I'll definitely have a look there, spend some time to learn new knowledge and tricks as I currently haven't done anything with OTA yet. Just can't promise anything.

Regards,

only the flash storage needs to be added in InternalStorage and the base classes. there are already 3 ARM platforms including SAMD21 implemented so plenty of examples.

EDIT: btw, @khoih-prog the ArduinoOTA library is now used in Blynk.Edgent examples (for non esp boards). These complex examples show WiFi provisioning and OTA sketch update with download of new binary from the Blynk Cloud. Blynk's Volodymyr recently added SAMD51 support to my ArduinoOTA library.