aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32/src/dma/mod.rs
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-04-18 20:56:23 +0200
committerDario Nieuwenhuis <[email protected]>2023-04-18 20:56:23 +0200
commit2080d8bb6de58eb2da2ca5df2437ac8cc6577661 (patch)
tree06bc1eb9fc73e6b545b9718714d285f8400e820e /embassy-stm32/src/dma/mod.rs
parenta673b9aa294a55c441f3f61c48481484629b4347 (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.rs49
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)]
22mod dmamux; 22mod dmamux;
23 23
24pub mod word;
25
24use core::mem; 26use core::mem;
25 27
26use embassy_cortex_m::interrupt::Priority; 28use 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))]
41pub enum WordSize {
42 OneByte,
43 TwoBytes,
44 FourBytes,
45}
46
47impl 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
57mod word_sealed {
58 pub trait Word {}
59}
60
61pub trait Word: word_sealed::Word {
62 fn bits() -> WordSize;
63}
64
65impl word_sealed::Word for u8 {}
66impl Word for u8 {
67 fn bits() -> WordSize {
68 WordSize::OneByte
69 }
70}
71
72impl word_sealed::Word for u16 {}
73impl Word for u16 {
74 fn bits() -> WordSize {
75 WordSize::TwoBytes
76 }
77}
78
79impl word_sealed::Word for u32 {}
80impl Word for u32 {
81 fn bits() -> WordSize {
82 WordSize::FourBytes
83 }
84}
85
86pub struct NoDma; 41pub struct NoDma;
87 42
88impl_peripheral!(NoDma); 43impl_peripheral!(NoDma);