TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: juaperser1 en 06 de Octubre de 2019, 15:00:29

Título: Memoria Flash STM32G030C8T6
Publicado por: juaperser1 en 06 de Octubre de 2019, 15:00:29
Buenas, estoy intentando grabar unos datos en la flash del microcontrolador STM32G030C8T6, pero no me termina de funcionar:

las paginas son de 2K y la memoria flash de 64KB.

tengo el siguiente código basico para guardar un dato:

Código: [Seleccionar]
HAL_FLASH_Unlock(); //Desbloquemos la memoria
EraseInitStruct.TypeErase   = FLASH_TYPEERASE_PAGES; //Indicamos que vamos a borrar paginas de la memoria y no la memoria entera
EraseInitStruct.Page = FLASH_USER_START_ADDR; //Indicamos el inicio de la memoria de usuario
EraseInitStruct.NbPages     = 1; //Indicamos el numero de paginas a borrar
HAL_FLASHEx_Erase(&EraseInitStruct, &pagina_error); //Iniciamos el proceso de borrado de la memoria

direccion_guardar=FLASH_USER_START_ADDR;
HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, direccion_guardar, (uint64_t)Parametros.A01);

He probado con bastantes direcciones de memoria inicial a ver si esque estaba pisando el codigo pero nada, el debug se queda colgado justo despues de la linea :

HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, direccion_guardar, (uint64_t)Parametros.A01);

la direccion que he colocado es la 0x0800 F800 que es la ultima pagina de la memoria para este micro.

¿que estoy haciendo mal?
Título: Re:Memoria Flash STM32G030C8T6
Publicado por: planeta9999 en 06 de Octubre de 2019, 21:06:11
 
Una vez actualizado, descarga y edita el binario a ver lo que ha hecho el programa, pero si se bloquea parece claro que estás escribiendo en la página donde está el programa en ejecución.
Título: Re:Memoria Flash STM32G030C8T6
Publicado por: juaperser1 en 07 de Octubre de 2019, 02:25:02
ya lo he resuelto, resulta que el problema estaba al borrar la hoja no al escribirla, antes las librerias te pedian la direccion de memoria de la pagina a borrar, ahora te piden directamente la pagina que vas a borrar, o sea la 31.

un saludo