Skip to content

Commit 2a79c55

Browse files
authored
Merge pull request #4767 from blueskycoco/stm32-l-flash
stm32: flash: fix flash erase on stm32l4xx, stm32l5xx series
2 parents c80d8b2 + 6ba2611 commit 2a79c55

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

embassy-stm32/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111
* **Fix(stm32h5):** Prevent a HardFault crash on STM32H5 devices by changing `uid()` to return `[u8; 12]` by value instead of a reference. (Fixes #2696)
1212
## Unreleased - ReleaseDate
1313

14+
- fix flash erase on L4 & L5
1415
- fix: Fixed STM32H5 builds requiring time feature
1516
- feat: Derive Clone, Copy for QSPI Config
1617
- fix: stm32/i2c in master mode (blocking): subsequent transmissions failed after a NACK was received

embassy-stm32/src/flash/l.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,20 @@ pub(crate) unsafe fn blocking_erase_sector(sector: &FlashSector) -> Result<(), E
9696
#[cfg(any(flash_wl, flash_wb, flash_l4, flash_l5))]
9797
{
9898
let idx = (sector.start - super::FLASH_BASE as u32) / super::BANK1_REGION.erase_size as u32;
99+
#[cfg(any(flash_l4, flash_l5))]
100+
let pgn = super::BANK1_REGION.size as u32 / super::BANK1_REGION.erase_size as u32;
99101

100102
#[cfg(flash_l4)]
101-
let (idx, bank) = if idx > 255 { (idx - 256, true) } else { (idx, false) };
103+
let (idx, bank) = if idx > (pgn - 1) {
104+
(idx - pgn, true)
105+
} else {
106+
(idx, false)
107+
};
102108

103109
#[cfg(flash_l5)]
104110
let (idx, bank) = if pac::FLASH.optr().read().dbank() {
105-
if idx > 255 {
106-
(idx - 256, Some(true))
111+
if idx > (pgn - 1) {
112+
(idx - pgn, Some(true))
107113
} else {
108114
(idx, Some(false))
109115
}

0 commit comments

Comments
 (0)