diff options
| -rw-r--r-- | embassy-stm32/src/f4/spi.rs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/embassy-stm32/src/f4/spi.rs b/embassy-stm32/src/f4/spi.rs index 65bf7287a..990fc5e95 100644 --- a/embassy-stm32/src/f4/spi.rs +++ b/embassy-stm32/src/f4/spi.rs | |||
| @@ -259,6 +259,9 @@ where | |||
| 259 | let tx_stream = self.tx_stream.take().unwrap(); | 259 | let tx_stream = self.tx_stream.take().unwrap(); |
| 260 | let spi = self.spi.take().unwrap(); | 260 | let spi = self.spi.take().unwrap(); |
| 261 | 261 | ||
| 262 | spi.cr2 | ||
| 263 | .modify(|_, w| w.errie().set_bit().txeie().set_bit().rxneie().set_bit()); | ||
| 264 | |||
| 262 | // let mut tx_transfer = Transfer::init( | 265 | // let mut tx_transfer = Transfer::init( |
| 263 | // tx_stream, | 266 | // tx_stream, |
| 264 | // spi, | 267 | // spi, |
| @@ -279,9 +282,24 @@ where | |||
| 279 | 282 | ||
| 280 | for i in 0..(static_buf.len() - 1) { | 283 | for i in 0..(static_buf.len() - 1) { |
| 281 | let byte = static_buf[i]; | 284 | let byte = static_buf[i]; |
| 282 | nb::block!(write_sr(&spi, byte)); | 285 | loop { |
| 286 | let fut = InterruptFuture::new(&mut self.spi_int); | ||
| 287 | match write_sr(&spi, byte) { | ||
| 288 | Ok(()) => break, | ||
| 289 | _ => {} | ||
| 290 | } | ||
| 291 | fut.await; | ||
| 292 | } | ||
| 283 | } | 293 | } |
| 284 | 294 | ||
| 295 | spi.cr2.modify(|_, w| { | ||
| 296 | w.errie() | ||
| 297 | .clear_bit() | ||
| 298 | .txeie() | ||
| 299 | .clear_bit() | ||
| 300 | .rxneie() | ||
| 301 | .clear_bit() | ||
| 302 | }); | ||
| 285 | self.tx_stream.replace(tx_stream); | 303 | self.tx_stream.replace(tx_stream); |
| 286 | self.spi.replace(spi); | 304 | self.spi.replace(spi); |
| 287 | 305 | ||
