STM32H745 On-board Flash Storage
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-06-03 7: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.
- Labels:
-
STM32H7 series
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-06-04 8:32 AM
https://github.com/nimaltd/ee
I used this library at the end it works perfectly.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-06-03 7: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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-06-03 8: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
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-06-04 8:32 AM
https://github.com/nimaltd/ee
I used this library at the end it works perfectly.
