Almacenamiento de configuraciones/datos en la memoria no volátil de los microcontroladores (STM32F103)

Quiero poder almacenar valores en una memoria no volátil para que el microcontrolador pueda cargar esta configuración al inicio. Esta configuración puede cambiar en tiempo de ejecución y es importante para la funcionalidad de los sistemas que esta configuración se almacene.

Que yo sepa, la única memoria no volátil del STM32F103 es la memoria flash. ¿Es posible guardar valores en flash en algún lugar en tiempo de ejecución?

También tengo la posibilidad de usar una tarjeta SD y la interfaz SDIO o SPI para almacenar los valores allí, pero si es posible, sería mejor si se puede evitar una tarjeta SD.

La cantidad de datos es de unos pocos cientos de bytes como máximo.

Sí, puede escribir en la memoria flash, sujeto a las restricciones habituales de tamaño de bloque de borrado, vida útil de reescritura limitada y una operación relativamente lenta y complicada. ST tiene una nota de aplicación que describe cómo. Además, algunas herramientas de actualización basadas en SWD realmente funcionan cargando cada bloque de datos en la RAM y luego ejecutando un pequeño programa que almacena eso en la actualización.
Una pequeña EEPROM en serie es a veces una mejor solución. Puede obtener versiones SPI o I2C o Microwire, en paquetes SOIC-8 e incluso SOT-23.

Respuestas (1)

Por lo que sé hay dos opciones:

  • Use flash (emulado como EEPROM para facilitar su uso) de acuerdo con esta Nota de aplicación
  • Use los registros de respaldo (20 bytes de registros respaldados por batería) de acuerdo con las páginas 67 y 79 del Manual de referencia

Por cierto, si mueve uno de los hermanos mayores (F2-F4) de este chip, obtiene una parte completa de la batería RAM respaldada por algo así como 4k, pero depende del chip real.

La tercera opción es conectar una EEPROM serial externa SPI (25xx), I2C (24xx), Microwire (93xx) o de 1 cable (11xx). microchip.com/pagehandler/en-us/products/memory/serialEEPROM/…
También la alta densidad, por ejemplo, STM32103VC tiene 84 bytes de registros respaldados por batería.