aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Miller <[email protected]>2022-03-14 18:04:31 -0500
committerGrant Miller <[email protected]>2022-03-14 18:04:31 -0500
commit15c533fe2a7fe2adad3aff186a3d57332eb014fb (patch)
tree5ac7c9d453d49fc0a8185b6762ebfb6195420235
parent064170fce0494f51e91163aa4ec9e1009c7f6a62 (diff)
Fix async `write` bug
-rw-r--r--embassy-stm32/src/spi/mod.rs7
1 files changed, 3 insertions, 4 deletions
diff --git a/embassy-stm32/src/spi/mod.rs b/embassy-stm32/src/spi/mod.rs
index 3b39f0fd2..1b2cdf19e 100644
--- a/embassy-stm32/src/spi/mod.rs
+++ b/embassy-stm32/src/spi/mod.rs
@@ -418,10 +418,6 @@ impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> {
418 }); 418 });
419 } 419 }
420 420
421 // TODO: This is unnecessary in some versions because
422 // clearing SPE automatically clears the fifos
423 flush_rx_fifo(T::REGS);
424
425 let tx_request = self.txdma.request(); 421 let tx_request = self.txdma.request();
426 let tx_dst = T::REGS.tx_ptr(); 422 let tx_dst = T::REGS.tx_ptr();
427 unsafe { self.txdma.start_write(tx_request, data, tx_dst) } 423 unsafe { self.txdma.start_write(tx_request, data, tx_dst) }
@@ -440,6 +436,9 @@ impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> {
440 436
441 tx_f.await; 437 tx_f.await;
442 438
439 // flush here otherwise `finish_dma` hangs waiting for the rx fifo to empty
440 flush_rx_fifo(T::REGS);
441
443 finish_dma(T::REGS); 442 finish_dma(T::REGS);
444 443
445 Ok(()) 444 Ok(())