diff options
| -rw-r--r-- | embassy-stm32/src/spi/mod.rs | 1 | ||||
| -rw-r--r-- | embassy-stm32/src/spi/v1.rs | 18 | ||||
| m--------- | stm32-data | 0 |
3 files changed, 17 insertions, 2 deletions
diff --git a/embassy-stm32/src/spi/mod.rs b/embassy-stm32/src/spi/mod.rs index 6249de84e..808854f00 100644 --- a/embassy-stm32/src/spi/mod.rs +++ b/embassy-stm32/src/spi/mod.rs | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #![macro_use] | 1 | #![macro_use] |
| 2 | 2 | ||
| 3 | #[cfg_attr(spi_v1, path = "v1.rs")] | 3 | #[cfg_attr(spi_v1, path = "v1.rs")] |
| 4 | #[cfg_attr(spi_f1, path = "v1.rs")] | ||
| 4 | #[cfg_attr(spi_v2, path = "v2.rs")] | 5 | #[cfg_attr(spi_v2, path = "v2.rs")] |
| 5 | #[cfg_attr(spi_v3, path = "v3.rs")] | 6 | #[cfg_attr(spi_v3, path = "v3.rs")] |
| 6 | mod _version; | 7 | mod _version; |
diff --git a/embassy-stm32/src/spi/v1.rs b/embassy-stm32/src/spi/v1.rs index 53d8252e6..982f1cc4b 100644 --- a/embassy-stm32/src/spi/v1.rs +++ b/embassy-stm32/src/spi/v1.rs | |||
| @@ -414,7 +414,7 @@ fn write_word<W: Word>(regs: &'static crate::pac::spi::Spi, word: W) -> Result<( | |||
| 414 | let sr = unsafe { regs.sr().read() }; | 414 | let sr = unsafe { regs.sr().read() }; |
| 415 | if sr.ovr() { | 415 | if sr.ovr() { |
| 416 | return Err(Error::Overrun); | 416 | return Err(Error::Overrun); |
| 417 | } else if sr.fre() { | 417 | } else if sr_fre(sr) { |
| 418 | return Err(Error::Framing); | 418 | return Err(Error::Framing); |
| 419 | } else if sr.modf() { | 419 | } else if sr.modf() { |
| 420 | return Err(Error::ModeFault); | 420 | return Err(Error::ModeFault); |
| @@ -438,7 +438,7 @@ fn read_word<W: Word>(regs: &'static crate::pac::spi::Spi) -> Result<W, Error> { | |||
| 438 | return Err(Error::Overrun); | 438 | return Err(Error::Overrun); |
| 439 | } else if sr.modf() { | 439 | } else if sr.modf() { |
| 440 | return Err(Error::ModeFault); | 440 | return Err(Error::ModeFault); |
| 441 | } else if sr.fre() { | 441 | } else if sr_fre(sr) { |
| 442 | return Err(Error::Framing); | 442 | return Err(Error::Framing); |
| 443 | } else if sr.crcerr() { | 443 | } else if sr.crcerr() { |
| 444 | return Err(Error::Crc); | 444 | return Err(Error::Crc); |
| @@ -450,3 +450,17 @@ fn read_word<W: Word>(regs: &'static crate::pac::spi::Spi) -> Result<W, Error> { | |||
| 450 | } | 450 | } |
| 451 | } | 451 | } |
| 452 | } | 452 | } |
| 453 | |||
| 454 | // SPI on F1 is just V1 without FRE and FRF fields | ||
| 455 | // This driver only uses FRE, so add a simple function here to read fre on v1, | ||
| 456 | // and return false on f1 | ||
| 457 | |||
| 458 | #[cfg(spi_v1)] | ||
| 459 | fn sr_fre(sr: crate::pac::spi::regs::Sr) -> bool { | ||
| 460 | sr.fre() | ||
| 461 | } | ||
| 462 | |||
| 463 | #[cfg(spi_f1)] | ||
| 464 | fn sr_fre(_sr: crate::pac::spi::regs::Sr) -> bool { | ||
| 465 | false | ||
| 466 | } | ||
diff --git a/stm32-data b/stm32-data | |||
| Subproject e78ea6f05058dc1eff1dd4a4f07227d502a3b65 | Subproject bae2d34445f87e7b9a88b683c789c5d0c7560fb | ||
