diff options
| -rw-r--r-- | embassy-stm32/src/spi/mod.rs | 43 | ||||
| -rw-r--r-- | embassy-stm32/src/spi/v1.rs | 9 | ||||
| -rw-r--r-- | embassy-stm32/src/spi/v2.rs | 16 | ||||
| -rw-r--r-- | embassy-stm32/src/spi/v3.rs | 16 |
4 files changed, 43 insertions, 41 deletions
diff --git a/embassy-stm32/src/spi/mod.rs b/embassy-stm32/src/spi/mod.rs index 8668f6344..a0bb66eb0 100644 --- a/embassy-stm32/src/spi/mod.rs +++ b/embassy-stm32/src/spi/mod.rs | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #[cfg_attr(spi_v2, path = "v2.rs")] | 5 | #[cfg_attr(spi_v2, path = "v2.rs")] |
| 6 | #[cfg_attr(spi_v3, path = "v3.rs")] | 6 | #[cfg_attr(spi_v3, path = "v3.rs")] |
| 7 | mod _version; | 7 | mod _version; |
| 8 | use crate::pac::spi::vals; | ||
| 8 | use crate::{dma, peripherals, rcc::RccPeripheral}; | 9 | use crate::{dma, peripherals, rcc::RccPeripheral}; |
| 9 | pub use _version::*; | 10 | pub use _version::*; |
| 10 | 11 | ||
| @@ -31,6 +32,48 @@ enum WordSize { | |||
| 31 | SixteenBit, | 32 | SixteenBit, |
| 32 | } | 33 | } |
| 33 | 34 | ||
| 35 | impl WordSize { | ||
| 36 | #[cfg(any(spi_v1, spi_f1))] | ||
| 37 | fn dff(&self) -> vals::Dff { | ||
| 38 | match self { | ||
| 39 | WordSize::EightBit => vals::Dff::EIGHTBIT, | ||
| 40 | WordSize::SixteenBit => vals::Dff::SIXTEENBIT, | ||
| 41 | } | ||
| 42 | } | ||
| 43 | |||
| 44 | #[cfg(spi_v2)] | ||
| 45 | fn ds(&self) -> vals::Ds { | ||
| 46 | match self { | ||
| 47 | WordSize::EightBit => vals::Ds::EIGHTBIT, | ||
| 48 | WordSize::SixteenBit => vals::Ds::SIXTEENBIT, | ||
| 49 | } | ||
| 50 | } | ||
| 51 | |||
| 52 | #[cfg(spi_v2)] | ||
| 53 | fn frxth(&self) -> vals::Frxth { | ||
| 54 | match self { | ||
| 55 | WordSize::EightBit => vals::Frxth::QUARTER, | ||
| 56 | WordSize::SixteenBit => vals::Frxth::HALF, | ||
| 57 | } | ||
| 58 | } | ||
| 59 | |||
| 60 | #[cfg(spi_v3)] | ||
| 61 | fn dsize(&self) -> u8 { | ||
| 62 | match self { | ||
| 63 | WordSize::EightBit => 0b0111, | ||
| 64 | WordSize::SixteenBit => 0b1111, | ||
| 65 | } | ||
| 66 | } | ||
| 67 | |||
| 68 | #[cfg(spi_v3)] | ||
| 69 | fn _frxth(&self) -> vals::Fthlv { | ||
| 70 | match self { | ||
| 71 | WordSize::EightBit => vals::Fthlv::ONEFRAME, | ||
| 72 | WordSize::SixteenBit => vals::Fthlv::ONEFRAME, | ||
| 73 | } | ||
| 74 | } | ||
| 75 | } | ||
| 76 | |||
| 34 | #[non_exhaustive] | 77 | #[non_exhaustive] |
| 35 | pub struct Config { | 78 | pub struct Config { |
| 36 | pub mode: Mode, | 79 | pub mode: Mode, |
diff --git a/embassy-stm32/src/spi/v1.rs b/embassy-stm32/src/spi/v1.rs index 9ad9397a4..08bee758b 100644 --- a/embassy-stm32/src/spi/v1.rs +++ b/embassy-stm32/src/spi/v1.rs | |||
| @@ -20,15 +20,6 @@ pub use embedded_hal::blocking; | |||
| 20 | pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; | 20 | pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; |
| 21 | use futures::future::join3; | 21 | use futures::future::join3; |
| 22 | 22 | ||
| 23 | impl WordSize { | ||
| 24 | fn dff(&self) -> spi::vals::Dff { | ||
| 25 | match self { | ||
| 26 | WordSize::EightBit => spi::vals::Dff::EIGHTBIT, | ||
| 27 | WordSize::SixteenBit => spi::vals::Dff::SIXTEENBIT, | ||
| 28 | } | ||
| 29 | } | ||
| 30 | } | ||
| 31 | |||
| 32 | pub struct Spi<'d, T: Instance, Tx, Rx> { | 23 | pub struct Spi<'d, T: Instance, Tx, Rx> { |
| 33 | sck: Option<AnyPin>, | 24 | sck: Option<AnyPin>, |
| 34 | mosi: Option<AnyPin>, | 25 | mosi: Option<AnyPin>, |
diff --git a/embassy-stm32/src/spi/v2.rs b/embassy-stm32/src/spi/v2.rs index aa04fcca4..b281c7548 100644 --- a/embassy-stm32/src/spi/v2.rs +++ b/embassy-stm32/src/spi/v2.rs | |||
| @@ -18,22 +18,6 @@ use embassy_traits::spi as traits; | |||
| 18 | pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; | 18 | pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; |
| 19 | use futures::future::{join, join3}; | 19 | use futures::future::{join, join3}; |
| 20 | 20 | ||
| 21 | impl WordSize { | ||
| 22 | fn ds(&self) -> spi::vals::Ds { | ||
| 23 | match self { | ||
| 24 | WordSize::EightBit => spi::vals::Ds::EIGHTBIT, | ||
| 25 | WordSize::SixteenBit => spi::vals::Ds::SIXTEENBIT, | ||
| 26 | } | ||
| 27 | } | ||
| 28 | |||
| 29 | fn frxth(&self) -> spi::vals::Frxth { | ||
| 30 | match self { | ||
| 31 | WordSize::EightBit => spi::vals::Frxth::QUARTER, | ||
| 32 | WordSize::SixteenBit => spi::vals::Frxth::HALF, | ||
| 33 | } | ||
| 34 | } | ||
| 35 | } | ||
| 36 | |||
| 37 | pub struct Spi<'d, T: Instance, Tx, Rx> { | 21 | pub struct Spi<'d, T: Instance, Tx, Rx> { |
| 38 | sck: Option<AnyPin>, | 22 | sck: Option<AnyPin>, |
| 39 | mosi: Option<AnyPin>, | 23 | mosi: Option<AnyPin>, |
diff --git a/embassy-stm32/src/spi/v3.rs b/embassy-stm32/src/spi/v3.rs index dbd9d78c9..cd88acb7a 100644 --- a/embassy-stm32/src/spi/v3.rs +++ b/embassy-stm32/src/spi/v3.rs | |||
| @@ -19,22 +19,6 @@ pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_ | |||
| 19 | 19 | ||
| 20 | use futures::future::join3; | 20 | use futures::future::join3; |
| 21 | 21 | ||
| 22 | impl WordSize { | ||
| 23 | fn dsize(&self) -> u8 { | ||
| 24 | match self { | ||
| 25 | WordSize::EightBit => 0b0111, | ||
| 26 | WordSize::SixteenBit => 0b1111, | ||
| 27 | } | ||
| 28 | } | ||
| 29 | |||
| 30 | fn _frxth(&self) -> spi::vals::Fthlv { | ||
| 31 | match self { | ||
| 32 | WordSize::EightBit => spi::vals::Fthlv::ONEFRAME, | ||
| 33 | WordSize::SixteenBit => spi::vals::Fthlv::ONEFRAME, | ||
| 34 | } | ||
| 35 | } | ||
| 36 | } | ||
| 37 | |||
| 38 | #[allow(unused)] | 22 | #[allow(unused)] |
| 39 | pub struct Spi<'d, T: Instance, Tx = NoDma, Rx = NoDma> { | 23 | pub struct Spi<'d, T: Instance, Tx = NoDma, Rx = NoDma> { |
| 40 | sck: Option<AnyPin>, | 24 | sck: Option<AnyPin>, |
