2024-06-03 07:08 AM
Hi,
I am building a product where I have to store calibration data and retain it even after power off.
I am using the STM32H745ZiT6 and would like to use its flash to read/write data.
As I have setup communication between the two cores I have the current setup on the MPU:
void MPU_Config(void)
{
MPU_Region_InitTypeDef MPU_InitStruct = {0};
/* Disables the MPU */
HAL_MPU_Disable();
/** Initializes and configures the Region and the memory to be protected
*/
MPU_InitStruct.Enable = MPU_REGION_ENABLE;
MPU_InitStruct.Number = MPU_REGION_NUMBER0;
MPU_InitStruct.BaseAddress = 0x38000000;
MPU_InitStruct.Size = MPU_REGION_SIZE_64KB;
MPU_InitStruct.SubRegionDisable = 0x0;
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
HAL_MPU_ConfigRegion(&MPU_InitStruct);
/* Enables the MPU */
HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
}
I have found this example for flash, but wanted to check if its up-to-date and safe to use. Although it is not ment directly for my controller. https://github.com/STMicroelectronics/STM32CubeH7/tree/master/Projects/STM32H743I-EVAL/Examples/FLASH/FLASH_EraseProgram
I would like to receive some guidance regarding the flash read/write.
Thank you.
Solved! Go to Solution.
2024-06-04 08:32 AM
https://github.com/nimaltd/ee
I used this library at the end it works perfectly.
2024-06-03 07:45 AM
Have you examined the EEPROM emulation code?
Although it is not placed in the applications folder of the STM32 card, this example is found in at least one of each series.
You can find the code sample in the directory below.
C:\Users\UserName\STM32Cube\Repository\STM32Cube_FW_H7_V1.11.2\Projects\NUCLEO-H743ZI\Applications\EEPROM
2024-06-03 08:59 AM
There's EEPROM Emulation, but it's a relative poor approach if you have a structure you can simply journal across the FLASH sector(s)
Check flash-line widths and minimum write size/alignment.
Both Cores can see the memory.
Write and Erase to a bank in use will stall the MCU. The large sector size can make this annoyingly long, so do erase and garbage collection a boot, or non-critical / non-realtime situations.
The Cortex-M7 needs it's cache cleared
2024-06-04 12:52 AM
Thanks for the replies.
I only want to access the eeprom from one core.
How should I set it up using the .ioc file?
2024-06-04 08:32 AM
https://github.com/nimaltd/ee
I used this library at the end it works perfectly.