Dónde almacenar variables no volátiles en el microcontrolador ARM

Pregunta de novato aquí. Tengo poca experiencia con microcontroladores y toda esa experiencia se limitó al 8051. Estoy trabajando en un proyecto y me gustaría usar el microcontrolador ARM cortex M4. Programar el microcontrolador y configurar los registros y IO es bastante fácil. El proyecto requiere que una persona pueda ingresar ciertas variables como tiempo, peso, etc. Esos valores deben almacenarse en alguna memoria no volátil para que, si el sistema integrado pierde energía, los valores se conserven.

¿Alguno de los microcontroladores Cortex M4 tiene memoria flash en chip (u otra forma de memoria no volátil) que se puede usar para datos? En caso afirmativo, ¿cómo especifica el programa esta memoria en el chip como la ubicación para almacenar los datos?

Si no hay memoria en el chip como se describe anteriormente, supongo que se puede conectar un IC de memoria flash a los pines GPIO del microcontrolador para almacenar los datos externamente. ¿Hay algún recurso que pueda guiarme a través de este proceso?

No necesito almacenar muchos datos, por lo que sería preferible usar recursos en el chip en lugar de comprar otro IC solo para almacenar unos pocos bytes de información.

Respuestas (1)

Deberá leer la hoja de datos del chip en particular que tiene en mente. Hay algunos chips M4 con EEPROM borrable de bytes de alta resistencia (100 000 o más) (p. ej., R7FS7G27H3A01CFC), otros pueden tener memoria flash grabable pero deben borrarse un sector a la vez y la resistencia puede ser mucho menor.

'ARM Cortex M4' solo describe las características básicas del núcleo. Hay funciones opcionales, y la memoria y el complemento periférico dependerán de la implementación individual del fabricante.

Puede usar una EEPROM serial I2C o SPI de manera fácil y económica (a partir de aproximadamente 10 centavos en cantidad) si desea almacenar algunos bytes de datos de usuario, por lo que no es necesario que la inclusión de EEPROM sea un requisito para la MCU. Por ejemplo, observe el 24C01 de 128 bytes .

Algunos también pueden admitir una batería de respaldo, que generalmente es una mala opción para el almacenamiento de memoria no volátil simple, pero si necesita un reloj en tiempo real y puede soportar que los datos desaparezcan a veces cuando la batería se agota, podría ser una opción viable .

@boymeetcode: esta pregunta anterior de EE.SE sobre el mismo tema proporciona ejemplos útiles, aunque algunos enlaces son específicos de esa familia de MCU, por el motivo explicado por Spehro: electronics.stackexchange.com/questions/98381/… : Una buena búsqueda El término es "emulación de EEPROM" si desea obtener información sobre algunas de las compensaciones de costo frente a complejidad de intentar usar Flash en el chip para almacenar datos generados por programas, para aquellas MCU que no tienen EEPROM en el chip.