From b732336f2f3ff9f7ec27d1d75a3e78cc1a0ad054 Mon Sep 17 00:00:00 2001 From: Albin Hedman Date: Wed, 3 Dec 2025 18:04:48 +0100 Subject: GPDMA suspend channel before reset if already enabled --- embassy-stm32/src/dma/gpdma/mod.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/embassy-stm32/src/dma/gpdma/mod.rs b/embassy-stm32/src/dma/gpdma/mod.rs index bfd0570f8..51c107cb4 100644 --- a/embassy-stm32/src/dma/gpdma/mod.rs +++ b/embassy-stm32/src/dma/gpdma/mod.rs @@ -238,6 +238,11 @@ impl AnyChannel { // "Preceding reads and writes cannot be moved past subsequent writes." fence(Ordering::SeqCst); + if ch.cr().read().en() { + ch.cr().modify(|w| w.set_susp(true)); + while !ch.sr().read().suspf() {} + } + ch.cr().write(|w| w.set_reset(true)); ch.fcr().write(|w| { // Clear all irqs -- cgit From 40d00d1208c1d0ea2c9a29ea30412b0491fd0543 Mon Sep 17 00:00:00 2001 From: Albin Hedman Date: Wed, 3 Dec 2025 18:21:54 +0100 Subject: Add changelog --- embassy-stm32/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/embassy-stm32/CHANGELOG.md b/embassy-stm32/CHANGELOG.md index 2b9e0a89a..ac228141e 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: stm32: GPDMA driver reset ignored during channel configuration - fix: stm32: SPI driver SSOE and SSM manegment, add `nss_output_disable` to SPI Config - change: stm32: use typelevel timer type to allow dma for 32 bit timers - fix: fix incorrect handling of split interrupts in timer driver -- cgit