address review comments
This commit is contained in:
parent
46fc15783d
commit
4d1fbcd9cd
1 changed files with 5 additions and 18 deletions
|
@ -657,28 +657,23 @@ impl<'d> Spi<'d, Async> {
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
let tsize = regs.cr2().read().tsize();
|
|
||||||
|
|
||||||
let rx_src = regs.rx_ptr();
|
let rx_src = regs.rx_ptr();
|
||||||
|
|
||||||
let mut read = 0;
|
for mut chunk in data.chunks_mut(u16::max_value().into()) {
|
||||||
let mut remaining = data.len();
|
|
||||||
|
|
||||||
loop {
|
|
||||||
self.set_word_size(W::CONFIG);
|
self.set_word_size(W::CONFIG);
|
||||||
set_rxdmaen(regs, true);
|
set_rxdmaen(regs, true);
|
||||||
|
|
||||||
let transfer_size = remaining.min(u16::max_value().into());
|
let tsize = chunk.len();
|
||||||
|
|
||||||
let transfer = unsafe {
|
let transfer = unsafe {
|
||||||
self.rx_dma
|
self.rx_dma
|
||||||
.as_mut()
|
.as_mut()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.read(rx_src, &mut data[read..(read + transfer_size)], Default::default())
|
.read(rx_src, &mut chunk, Default::default())
|
||||||
};
|
};
|
||||||
|
|
||||||
regs.cr2().modify(|w| {
|
regs.cr2().modify(|w| {
|
||||||
w.set_tsize(transfer_size as u16);
|
w.set_tsize(tsize as u16);
|
||||||
});
|
});
|
||||||
|
|
||||||
regs.cr1().modify(|w| {
|
regs.cr1().modify(|w| {
|
||||||
|
@ -692,14 +687,6 @@ impl<'d> Spi<'d, Async> {
|
||||||
transfer.await;
|
transfer.await;
|
||||||
|
|
||||||
finish_dma(regs);
|
finish_dma(regs);
|
||||||
|
|
||||||
remaining -= transfer_size;
|
|
||||||
|
|
||||||
if remaining == 0 {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
read += transfer_size;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
regs.cr1().modify(|w| {
|
regs.cr1().modify(|w| {
|
||||||
|
@ -711,7 +698,7 @@ impl<'d> Spi<'d, Async> {
|
||||||
});
|
});
|
||||||
|
|
||||||
regs.cr2().modify(|w| {
|
regs.cr2().modify(|w| {
|
||||||
w.set_tsize(tsize);
|
w.set_tsize(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
#[cfg(spi_v3)]
|
#[cfg(spi_v3)]
|
||||||
|
|
Loading…
Add table
Reference in a new issue