summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/stm32/flash.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/ports/stm32/flash.c b/ports/stm32/flash.c
index 22bdf57ec..10c5f296a 100644
--- a/ports/stm32/flash.c
+++ b/ports/stm32/flash.c
@@ -163,13 +163,18 @@ static const flash_layout_t flash_layout[] = {
#error Unsupported processor
#endif
-#if defined(STM32H723xx) || defined(STM32H750xx)
+#if defined(STM32H7) && !defined(DUAL_BANK)
// get the bank of a given flash address
static uint32_t get_bank(uint32_t addr) {
return FLASH_BANK_1;
}
+// get the page of a given flash address
+static uint32_t get_page(uint32_t addr) {
+ return (addr - FLASH_LAYOUT_START_ADDR) / FLASH_LAYOUT_SECTOR_SIZE;
+}
+
#elif (defined(STM32L4) && defined(SYSCFG_MEMRMP_FB_MODE)) || defined(STM32H5) || defined(STM32H7)
// get the bank of a given flash address
@@ -195,7 +200,6 @@ static uint32_t get_bank(uint32_t addr) {
}
}
-#if (defined(STM32L4) && defined(SYSCFG_MEMRMP_FB_MODE))
// get the page of a given flash address
static uint32_t get_page(uint32_t addr) {
if (addr < (FLASH_LAYOUT_START_ADDR + FLASH_BANK_SIZE)) {
@@ -206,7 +210,6 @@ static uint32_t get_page(uint32_t addr) {
return (addr - (FLASH_LAYOUT_START_ADDR + FLASH_BANK_SIZE)) / FLASH_LAYOUT_SECTOR_SIZE;
}
}
-#endif
#elif (defined(STM32L4) && !defined(SYSCFG_MEMRMP_FB_MODE)) || defined(STM32WB) || defined(STM32WL)
@@ -352,10 +355,7 @@ int flash_erase(uint32_t flash_dest) {
EraseInitStruct.Sector = flash_get_sector_info(flash_dest, NULL, NULL);
#elif defined(STM32H5) || defined(STM32H7)
EraseInitStruct.Banks = get_bank(flash_dest);
- EraseInitStruct.Sector = flash_get_sector_info(flash_dest, NULL, NULL);
- #if defined(STM32H5)
- EraseInitStruct.Sector &= 0x7f; // second bank should start counting at 0
- #endif
+ EraseInitStruct.Sector = get_page(flash_dest);
#else
#error Unsupported processor
#endif