From 4d1fbcd9cd42ebc3169008e189fcd98dce1c427d Mon Sep 17 00:00:00 2001 From: Alexandros Liarokapis <liarokapis.v@gmail.com> Date: Tue, 28 May 2024 13:38:27 +0300 Subject: [PATCH] address review comments --- embassy-stm32/src/spi/mod.rs | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/embassy-stm32/src/spi/mod.rs b/embassy-stm32/src/spi/mod.rs index 109b2738b..7fb8da5ac 100644 --- a/embassy-stm32/src/spi/mod.rs +++ b/embassy-stm32/src/spi/mod.rs @@ -657,28 +657,23 @@ impl<'d> Spi<'d, Async> { }) }); - let tsize = regs.cr2().read().tsize(); - let rx_src = regs.rx_ptr(); - let mut read = 0; - let mut remaining = data.len(); - - loop { + for mut chunk in data.chunks_mut(u16::max_value().into()) { self.set_word_size(W::CONFIG); set_rxdmaen(regs, true); - let transfer_size = remaining.min(u16::max_value().into()); + let tsize = chunk.len(); let transfer = unsafe { self.rx_dma .as_mut() .unwrap() - .read(rx_src, &mut data[read..(read + transfer_size)], Default::default()) + .read(rx_src, &mut chunk, Default::default()) }; regs.cr2().modify(|w| { - w.set_tsize(transfer_size as u16); + w.set_tsize(tsize as u16); }); regs.cr1().modify(|w| { @@ -692,14 +687,6 @@ impl<'d> Spi<'d, Async> { transfer.await; finish_dma(regs); - - remaining -= transfer_size; - - if remaining == 0 { - break; - } - - read += transfer_size; } regs.cr1().modify(|w| { @@ -711,7 +698,7 @@ impl<'d> Spi<'d, Async> { }); regs.cr2().modify(|w| { - w.set_tsize(tsize); + w.set_tsize(0); }); #[cfg(spi_v3)]