aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/src/spi/mod.rs43
-rw-r--r--embassy-stm32/src/spi/v1.rs9
-rw-r--r--embassy-stm32/src/spi/v2.rs16
-rw-r--r--embassy-stm32/src/spi/v3.rs16
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")]
7mod _version; 7mod _version;
8use crate::pac::spi::vals;
8use crate::{dma, peripherals, rcc::RccPeripheral}; 9use crate::{dma, peripherals, rcc::RccPeripheral};
9pub use _version::*; 10pub use _version::*;
10 11
@@ -31,6 +32,48 @@ enum WordSize {
31 SixteenBit, 32 SixteenBit,
32} 33}
33 34
35impl 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]
35pub struct Config { 78pub 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;
20pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; 20pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3};
21use futures::future::join3; 21use futures::future::join3;
22 22
23impl 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
32pub struct Spi<'d, T: Instance, Tx, Rx> { 23pub 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;
18pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; 18pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3};
19use futures::future::{join, join3}; 19use futures::future::{join, join3};
20 20
21impl 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
37pub struct Spi<'d, T: Instance, Tx, Rx> { 21pub 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
20use futures::future::join3; 20use futures::future::join3;
21 21
22impl 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)]
39pub struct Spi<'d, T: Instance, Tx = NoDma, Rx = NoDma> { 23pub struct Spi<'d, T: Instance, Tx = NoDma, Rx = NoDma> {
40 sck: Option<AnyPin>, 24 sck: Option<AnyPin>,