From 4efd9fccf4259779d96c5d1a4829a90bda1a5def Mon Sep 17 00:00:00 2001 From: Wouter Geraedts Date: Wed, 12 Nov 2025 20:48:03 +0100 Subject: Fix flash erase on dualbank STM32Gxxx --- embassy-stm32/CHANGELOG.md | 1 + embassy-stm32/src/flash/g.rs | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/embassy-stm32/CHANGELOG.md b/embassy-stm32/CHANGELOG.md index 3431848d3..b418faee6 100644 --- a/embassy-stm32/CHANGELOG.md +++ b/embassy-stm32/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased - ReleaseDate +- fix: flash erase on dual-bank STM32Gxxx - feat: Add support for STM32N657X0 - feat: timer: Add 32-bit timer support to SimplePwm waveform_up method following waveform pattern ([#4717](https://github.com/embassy-rs/embassy/pull/4717)) - feat: Add support for injected ADC measurements for g4 ([#4840](https://github.com/embassy-rs/embassy/pull/4840)) diff --git a/embassy-stm32/src/flash/g.rs b/embassy-stm32/src/flash/g.rs index d026541a4..d7ba2f571 100644 --- a/embassy-stm32/src/flash/g.rs +++ b/embassy-stm32/src/flash/g.rs @@ -44,7 +44,6 @@ pub(crate) unsafe fn blocking_write(start_address: u32, buf: &[u8; WRITE_SIZE]) } pub(crate) unsafe fn blocking_erase_sector(sector: &FlashSector) -> Result<(), Error> { - let idx = (sector.start - super::FLASH_BASE as u32) / super::BANK1_REGION.erase_size as u32; wait_busy(); clear_all_err(); @@ -54,9 +53,9 @@ pub(crate) unsafe fn blocking_erase_sector(sector: &FlashSector) -> Result<(), E #[cfg(any(flash_g0x0, flash_g0x1, flash_g4c3))] w.set_bker(sector.bank == crate::flash::FlashBank::Bank2); #[cfg(flash_g0x0)] - w.set_pnb(idx as u16); + w.set_pnb(sector.index_in_bank as u16); #[cfg(not(flash_g0x0))] - w.set_pnb(idx as u8); + w.set_pnb(sector.index_in_bank as u8); w.set_strt(true); }); }); -- cgit