cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H745 On-board Flash Storage

__silardg
Associate III

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. 

 

1 ACCEPTED SOLUTION

Accepted Solutions
__silardg
Associate III

https://github.com/nimaltd/ee

I used this library at the end it works perfectly. 

View solution in original post

4 REPLIES 4
Muhammed Güler
Senior III

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

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

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
__silardg
Associate III

Thanks for the replies.

I only want to access the eeprom from one core. 

How should I set it up using the .ioc file? 

__silardg
Associate III

https://github.com/nimaltd/ee

I used this library at the end it works perfectly.