diff options
| author | Dario Nieuwenhuis <[email protected]> | 2023-04-18 20:56:23 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2023-04-18 20:56:23 +0200 |
| commit | 2080d8bb6de58eb2da2ca5df2437ac8cc6577661 (patch) | |
| tree | 06bc1eb9fc73e6b545b9718714d285f8400e820e /embassy-stm32/src/dma/mod.rs | |
| parent | a673b9aa294a55c441f3f61c48481484629b4347 (diff) | |
stm32/spi: add support for all word sizes.
Co-Authored-By: anton smeenk <[email protected]>
Diffstat (limited to 'embassy-stm32/src/dma/mod.rs')
| -rw-r--r-- | embassy-stm32/src/dma/mod.rs | 49 |
1 files changed, 2 insertions, 47 deletions
diff --git a/embassy-stm32/src/dma/mod.rs b/embassy-stm32/src/dma/mod.rs index d29ef4a1f..3312ca752 100644 --- a/embassy-stm32/src/dma/mod.rs +++ b/embassy-stm32/src/dma/mod.rs | |||
| @@ -21,6 +21,8 @@ pub use gpdma::*; | |||
| 21 | #[cfg(dmamux)] | 21 | #[cfg(dmamux)] |
| 22 | mod dmamux; | 22 | mod dmamux; |
| 23 | 23 | ||
| 24 | pub mod word; | ||
| 25 | |||
| 24 | use core::mem; | 26 | use core::mem; |
| 25 | 27 | ||
| 26 | use embassy_cortex_m::interrupt::Priority; | 28 | use embassy_cortex_m::interrupt::Priority; |
| @@ -36,53 +38,6 @@ enum Dir { | |||
| 36 | PeripheralToMemory, | 38 | PeripheralToMemory, |
| 37 | } | 39 | } |
| 38 | 40 | ||
| 39 | #[derive(Debug, Copy, Clone, PartialEq, Eq)] | ||
| 40 | #[cfg_attr(feature = "defmt", derive(defmt::Format))] | ||
| 41 | pub enum WordSize { | ||
| 42 | OneByte, | ||
| 43 | TwoBytes, | ||
| 44 | FourBytes, | ||
| 45 | } | ||
| 46 | |||
| 47 | impl WordSize { | ||
| 48 | pub fn bytes(&self) -> usize { | ||
| 49 | match self { | ||
| 50 | Self::OneByte => 1, | ||
| 51 | Self::TwoBytes => 2, | ||
| 52 | Self::FourBytes => 4, | ||
| 53 | } | ||
| 54 | } | ||
| 55 | } | ||
| 56 | |||
| 57 | mod word_sealed { | ||
| 58 | pub trait Word {} | ||
| 59 | } | ||
| 60 | |||
| 61 | pub trait Word: word_sealed::Word { | ||
| 62 | fn bits() -> WordSize; | ||
| 63 | } | ||
| 64 | |||
| 65 | impl word_sealed::Word for u8 {} | ||
| 66 | impl Word for u8 { | ||
| 67 | fn bits() -> WordSize { | ||
| 68 | WordSize::OneByte | ||
| 69 | } | ||
| 70 | } | ||
| 71 | |||
| 72 | impl word_sealed::Word for u16 {} | ||
| 73 | impl Word for u16 { | ||
| 74 | fn bits() -> WordSize { | ||
| 75 | WordSize::TwoBytes | ||
| 76 | } | ||
| 77 | } | ||
| 78 | |||
| 79 | impl word_sealed::Word for u32 {} | ||
| 80 | impl Word for u32 { | ||
| 81 | fn bits() -> WordSize { | ||
| 82 | WordSize::FourBytes | ||
| 83 | } | ||
| 84 | } | ||
| 85 | |||
| 86 | pub struct NoDma; | 41 | pub struct NoDma; |
| 87 | 42 | ||
| 88 | impl_peripheral!(NoDma); | 43 | impl_peripheral!(NoDma); |
