diff options
| author | xoviat <[email protected]> | 2021-04-24 13:07:28 -0500 |
|---|---|---|
| committer | xoviat <[email protected]> | 2021-04-24 13:07:28 -0500 |
| commit | 1fef2d08fbacb7b37cc7a47734bdd840f8a97e04 (patch) | |
| tree | 87fae147f2e79f0253b61c419a0cf2b9db49d3ad | |
| parent | 578d920723ca7c2abf0c17c512114ed4e2eeaea4 (diff) | |
stm32: use interrupt for spi transmit
| -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 | ||
