From 11a9b3b057821d2a4b0515b21b3c68736d7cb953 Mon Sep 17 00:00:00 2001 From: Andrey Zgarbul Date: Mon, 4 Dec 2023 19:07:05 +0300 Subject: [PATCH 1/2] revert check --- src/spi.rs | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/spi.rs b/src/spi.rs index bba26b246..898a6f3bf 100644 --- a/src/spi.rs +++ b/src/spi.rs @@ -704,34 +704,34 @@ impl Inner { /// can be written to the SPI. #[inline] pub fn is_tx_empty(&self) -> bool { - self.flags().contains(Flag::TxEmpty) + self.spi.sr.read().txe().bit_is_set() } /// Return `true` if the RXNE flag is set, i.e. new data has been received /// and can be read from the SPI. #[inline] pub fn is_rx_not_empty(&self) -> bool { - self.flags().contains(Flag::RxNotEmpty) + self.spi.sr.read().rxne().bit_is_set() } /// Return `true` if the MODF flag is set, i.e. the SPI has experienced a /// Master Mode Fault. (see chapter 28.3.10 of the STM32F4 Reference Manual) #[inline] pub fn is_modf(&self) -> bool { - self.flags().contains(Flag::ModeFault) + self.spi.sr.read().modf().bit_is_set() } /// Returns true if the transfer is in progress #[inline] pub fn is_busy(&self) -> bool { - self.flags().contains(Flag::Busy) + self.spi.sr.read().bsy().bit_is_set() } /// Return `true` if the OVR flag is set, i.e. new data has been received /// while the receive data register was already filled. #[inline] pub fn is_overrun(&self) -> bool { - self.flags().contains(Flag::Overrun) + self.spi.sr.read().ovr().bit_is_set() } #[inline] @@ -759,15 +759,15 @@ impl Inner { #[inline(always)] fn check_read(&mut self) -> nb::Result { - let flags = self.flags(); + let sr = self.spi.sr.read(); - Err(if flags.contains(Flag::Overrun) { + Err(if sr.ovr().bit_is_set() { Error::Overrun.into() - } else if flags.contains(Flag::ModeFault) { + } else if sr.modf().bit_is_set() { Error::ModeFault.into() - } else if flags.contains(Flag::CrcError) { + } else if sr.crcerr().bit_is_set() { Error::Crc.into() - } else if flags.contains(Flag::RxNotEmpty) { + } else if sr.rxne().bit_is_set() { return Ok(self.read_data_reg()); } else { nb::Error::WouldBlock @@ -776,21 +776,21 @@ impl Inner { #[inline(always)] fn check_send(&mut self, byte: W) -> nb::Result<(), Error> { - let flags = self.flags(); + let sr = self.spi.sr.read(); - Err(if flags.contains(Flag::Overrun) { + Err(if sr.ovr().bit_is_set() { // Read from the DR to clear the OVR bit let _ = self.spi.dr.read(); Error::Overrun.into() - } else if flags.contains(Flag::ModeFault) { + } else if sr.modf().bit_is_set() { // Write to CR1 to clear MODF self.spi.cr1.modify(|_r, w| w); Error::ModeFault.into() - } else if flags.contains(Flag::CrcError) { + } else if sr.crcerr().bit_is_set() { // Clear the CRCERR bit self.spi.sr.modify(|_r, w| w.crcerr().clear_bit()); Error::Crc.into() - } else if flags.contains(Flag::TxEmpty) { + } else if sr.txe().bit_is_set() { self.write_data_reg(byte); return Ok(()); } else { From 0d0ae5688b3aa3a2d9872e83aeb0bb5708abd6e6 Mon Sep 17 00:00:00 2001 From: Andrey Zgarbul Date: Fri, 8 Dec 2023 22:56:35 +0300 Subject: [PATCH 2/2] changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fd377842..ecc26a138 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - bump embedded-hal to `1.0-rc2` - Use `as_ptr` for register address casting - Updated `synopsys-usb-otg` to `0.4.0` - - use `repr(u32)` for flags, revert `spi::CrcError` clean + - use `repr(u32)` for flags, revert `spi::CrcError` clean, + - revert `spi::check_read`/`check_write` ### Fixed