diff options
| -rw-r--r-- | embassy-stm32/src/spi/mod.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/embassy-stm32/src/spi/mod.rs b/embassy-stm32/src/spi/mod.rs index e5ba746e4..1f1708873 100644 --- a/embassy-stm32/src/spi/mod.rs +++ b/embassy-stm32/src/spi/mod.rs | |||
| @@ -456,13 +456,14 @@ impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> { | |||
| 456 | T::REGS.cr1().modify(|w| { | 456 | T::REGS.cr1().modify(|w| { |
| 457 | w.set_spe(false); | 457 | w.set_spe(false); |
| 458 | }); | 458 | }); |
| 459 | set_rxdmaen(T::REGS, true); | ||
| 460 | } | 459 | } |
| 461 | 460 | ||
| 462 | // SPIv3 clears rxfifo on SPE=0 | 461 | // SPIv3 clears rxfifo on SPE=0 |
| 463 | #[cfg(not(any(spi_v3, spi_v4)))] | 462 | #[cfg(not(any(spi_v3, spi_v4)))] |
| 464 | flush_rx_fifo(T::REGS); | 463 | flush_rx_fifo(T::REGS); |
| 465 | 464 | ||
| 465 | set_rxdmaen(T::REGS, true); | ||
| 466 | |||
| 466 | let clock_byte_count = data.len(); | 467 | let clock_byte_count = data.len(); |
| 467 | 468 | ||
| 468 | let rx_request = self.rxdma.request(); | 469 | let rx_request = self.rxdma.request(); |
| @@ -510,13 +511,14 @@ impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> { | |||
| 510 | T::REGS.cr1().modify(|w| { | 511 | T::REGS.cr1().modify(|w| { |
| 511 | w.set_spe(false); | 512 | w.set_spe(false); |
| 512 | }); | 513 | }); |
| 513 | set_rxdmaen(T::REGS, true); | ||
| 514 | } | 514 | } |
| 515 | 515 | ||
| 516 | // SPIv3 clears rxfifo on SPE=0 | 516 | // SPIv3 clears rxfifo on SPE=0 |
| 517 | #[cfg(not(any(spi_v3, spi_v4)))] | 517 | #[cfg(not(any(spi_v3, spi_v4)))] |
| 518 | flush_rx_fifo(T::REGS); | 518 | flush_rx_fifo(T::REGS); |
| 519 | 519 | ||
| 520 | set_rxdmaen(T::REGS, true); | ||
| 521 | |||
| 520 | let rx_request = self.rxdma.request(); | 522 | let rx_request = self.rxdma.request(); |
| 521 | let rx_src = T::REGS.rx_ptr(); | 523 | let rx_src = T::REGS.rx_ptr(); |
| 522 | unsafe { self.rxdma.start_read(rx_request, rx_src, read, Default::default()) }; | 524 | unsafe { self.rxdma.start_read(rx_request, rx_src, read, Default::default()) }; |
