aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/src/spi/v2.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/embassy-stm32/src/spi/v2.rs b/embassy-stm32/src/spi/v2.rs
index 9b8a74d7b..488e80ef8 100644
--- a/embassy-stm32/src/spi/v2.rs
+++ b/embassy-stm32/src/spi/v2.rs
@@ -17,7 +17,7 @@ use embassy::util::Unborrow;
17use embassy_hal_common::unborrow; 17use embassy_hal_common::unborrow;
18use embassy_traits::spi as traits; 18use embassy_traits::spi as traits;
19pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; 19pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3};
20use futures::future::join3; 20use futures::future::{join, join3};
21 21
22impl WordSize { 22impl WordSize {
23 fn ds(&self) -> spi::vals::Ds { 23 fn ds(&self) -> spi::vals::Ds {
@@ -186,7 +186,16 @@ impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> {
186 }); 186 });
187 } 187 }
188 188
189 f.await; 189 join(f, Self::wait_for_idle()).await;
190
191 unsafe {
192 T::regs().cr2().modify(|reg| {
193 reg.set_txdmaen(false);
194 });
195 T::regs().cr1().modify(|w| {
196 w.set_spe(false);
197 });
198 }
190 Ok(()) 199 Ok(())
191 } 200 }
192 201