Skip to content

Commit 0db2e3b

Browse files
committed
Implement pin traits for octospi
1 parent 18f8538 commit 0db2e3b

File tree

1 file changed

+171
-159
lines changed

1 file changed

+171
-159
lines changed

src/xspi/octospi.rs

Lines changed: 171 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use crate::{
1414
},
1515
gpiog::{PG0, PG1, PG10, PG11, PG12, PG14, PG15, PG6, PG7, PG9},
1616
gpioh::{PH2, PH3},
17-
Alternate, AF10, AF9,
17+
Alternate, AF0, AF10, AF11, AF12, AF3, AF4, AF6, AF9,
1818
},
1919
rcc::{rec, CoreClocks, ResetEnable},
2020
stm32,
@@ -47,165 +47,177 @@ pub trait PinIo7<OSPI> {}
4747
// {
4848
// }
4949

50-
// macro_rules! pins {
51-
// (Bank1: [IO0: [$($IO0:ty),*] IO1: [$($IO1:ty),*] IO2: [$($IO2:ty),*] IO3: [$($IO3:ty),*]]) => {
52-
// $(
53-
// impl PinIo0Bank1 for $IO0 {}
54-
// )*
55-
// $(
56-
// impl PinIo1Bank1 for $IO1 {}
57-
// )*
58-
// $(
59-
// impl PinIo2Bank1 for $IO2 {}
60-
// )*
61-
// $(
62-
// impl PinIo3Bank1 for $IO3 {}
63-
// )*
64-
// };
65-
66-
// (Bank2: [IO0: [$($IO0:ty),*] IO1: [$($IO1:ty),*] IO2: [$($IO2:ty),*] IO3: [$($IO3:ty),*]]) => {
67-
// $(
68-
// impl PinIo0Bank2 for $IO0 {}
69-
// )*
70-
// $(
71-
// impl PinIo1Bank2 for $IO1 {}
72-
// )*
73-
// $(
74-
// impl PinIo2Bank2 for $IO2 {}
75-
// )*
76-
// $(
77-
// impl PinIo3Bank2 for $IO3 {}
78-
// )*
79-
// };
80-
81-
// (SCK: [$($SCK:ty),*], Bank1: $bank1:tt, Bank2: $bank2:tt) => {
82-
// $(
83-
// impl PinSck for $SCK {}
84-
// )*
85-
// pins!(Bank1: $bank1);
86-
// pins!(Bank2: $bank2);
87-
// };
88-
// }
50+
macro_rules! pins {
51+
(
52+
$($BANK:ident:
53+
CLK: [$($CLK:ty),*] NCLK: [$($NCLK:ty),*] DQS: [$($DQS:ty),*] NCS: [$($NCS:ty),*]
54+
IO0: [$($IO0:ty),*] IO1: [$($IO1:ty),*] IO2: [$($IO2:ty),*] IO3: [$($IO3:ty),*]
55+
IO4: [$($IO4:ty),*] IO5: [$($IO5:ty),*] IO6: [$($IO6:ty),*] IO7: [$($IO7:ty),*]
56+
)*
57+
) => {
58+
$(
59+
$(
60+
impl PinClk<stm32::$BANK> for $CLK {}
61+
)*
62+
$(
63+
impl PinNclk<stm32::$BANK> for $NCLK {}
64+
)*
65+
$(
66+
impl PinDQS<stm32::$BANK> for $DQS {}
67+
)*
68+
$(
69+
impl PinNCS<stm32::$BANK> for $NCS {}
70+
)*
71+
$(
72+
impl PinIo0<stm32::$BANK> for $IO0 {}
73+
)*
74+
$(
75+
impl PinIo1<stm32::$BANK> for $IO1 {}
76+
)*
77+
$(
78+
impl PinIo2<stm32::$BANK> for $IO2 {}
79+
)*
80+
$(
81+
impl PinIo3<stm32::$BANK> for $IO3 {}
82+
)*
83+
$(
84+
impl PinIo4<stm32::$BANK> for $IO4 {}
85+
)*
86+
$(
87+
impl PinIo5<stm32::$BANK> for $IO5 {}
88+
)*
89+
$(
90+
impl PinIo6<stm32::$BANK> for $IO6 {}
91+
)*
92+
$(
93+
impl PinIo7<stm32::$BANK> for $IO7 {}
94+
)*
95+
)*
96+
};
97+
}
8998

90-
// pins! {
91-
// OCTOSPIM_P1:
92-
// CLK: [
93-
// PA3<Alternate<AF12>>,
94-
// PB2<Alternate<AF9>>,
95-
// PF10<Alternate<AF9>>
96-
// ]
97-
// NCLK: [
98-
// PB12<Alternate<AF3>>,
99-
// PF11<Alternate<AF9>>
100-
// ]
101-
// DQS: [
102-
// PA1<Alternate<AF12>>,
103-
// PB2<Alternate<AF10>>,
104-
// PC5<Alternate<AF10>>
105-
// ]
106-
// NCS: [
107-
// PB6<Alternate<AF10>>,
108-
// PB10<Alternate<AF9>>,
109-
// PC11<Alternate<AF9>>,
110-
// PE11<Alternate<AF11>>,
111-
// PG6<Alternate<AF10>>
112-
// ]
113-
// IO0: [
114-
// PA2<Alternate<AF6>>,
115-
// PB1<Alternate<AF4>>,
116-
// PB12<Alternate<AF12>>,
117-
// PC3<Alternate<AF9>>,
118-
// PC3<Alternate<AF0>>,
119-
// PC9<Alternate<AF9>>,
120-
// PD11<Alternate<AF9>>,
121-
// PF8<Alternate<AF10>>
122-
// ]
123-
// IO1: [
124-
// PB0<Alternate<AF4>>,
125-
// PC10<Alternate<AF9>>,
126-
// PD12<Alternate<AF9>>,
127-
// PF9<Alternate<AF10>>
128-
// ]
129-
// IO2: [
130-
// PA3<Alternate<AF6>>,
131-
// PA7<Alternate<AF10>>,
132-
// PB13<Alternate<AF4>>,
133-
// PC2<Alternate<AF9>>,
134-
// PC2<Alternate<AF0>>,
135-
// PE2<Alternate<AF9>>,
136-
// PF7<Alternate<AF10>>
137-
// ]
138-
// IO3: [
139-
// PA1<Alternate<AF9>>,
140-
// PA6<Alternate<AF6>>,
141-
// PD13<Alternate<AF9>>,
142-
// PF6<Alternate<AF10>>
143-
// ]
144-
// IO4: [
145-
// PC1<Alternate<AF10>>,
146-
// PD4<Alternate<AF10>>,
147-
// PE7<Alternate<AF10>>,
148-
// PH2<Alternate<AF9>>
149-
// ]
150-
// IO5: [
151-
// PC2<Alternate<AF4>>,
152-
// PC2<Alternate<AF0>>,
153-
// PD5<Alternate<AF10>>,
154-
// PE8<Alternate<AF10>>,
155-
// PH3<Alternate<AF9>>
156-
// ]
157-
// IO6: [
158-
// PC3<Alternate<AF4>>,
159-
// PC3<Alternate<AF0>>,
160-
// PD6<Alternate<AF10>>,
161-
// PE9<Alternate<AF10>>,
162-
// PG9<Alternate<AF9>>
163-
// ]
164-
// IO7: [
165-
// PD7<Alternate<AF10>>,
166-
// PE10<Alternate<AF10>>,
167-
// PG14<Alternate<AF9>>
168-
// ]
169-
// OCTOSPIM_P2:
170-
// CLK: [
171-
// PF4<Alternate<AF9>>
172-
// ]
173-
// NCLK: [
174-
// PF5<Alternate<AF9>>
175-
// ]
176-
// DQS: [
177-
// PF12<Alternate<AF9>>,
178-
// PG7<Alternate<AF9>>,
179-
// PG15<Alternate<AF9>>
180-
// ]
181-
// NCS: [
182-
// PG12<Alternate<AF3>>
183-
// ]
184-
// IO0: [
185-
// PF0<Alternate<AF9>>
186-
// ]
187-
// IO1: [
188-
// PF1<Alternate<AF9>>
189-
// ]
190-
// IO2: [
191-
// PF2<Alternate<AF9>>
192-
// ]
193-
// IO3: [
194-
// PF3<Alternate<AF9>>
195-
// ]
196-
// IO4: [
197-
// PG0<Alternate<AF9>>
198-
// ]
199-
// IO5: [
200-
// PG1<Alternate<AF9>>
201-
// ]
202-
// IO6: [
203-
// PG10<Alternate<AF3>>
204-
// ]
205-
// IO7: [
206-
// PG11<Alternate<AF9>>
207-
// ]
208-
// }
99+
#[cfg(any(feature = "rm0468"))] // TODO
100+
pins! {
101+
OCTOSPI1:
102+
CLK: [
103+
PA3<Alternate<AF12>>,
104+
PB2<Alternate<AF9>>,
105+
PF10<Alternate<AF9>>
106+
]
107+
NCLK: [
108+
PB12<Alternate<AF3>>,
109+
PF11<Alternate<AF9>>
110+
]
111+
DQS: [
112+
PA1<Alternate<AF12>>,
113+
PB2<Alternate<AF10>>,
114+
PC5<Alternate<AF10>>
115+
]
116+
NCS: [
117+
PB6<Alternate<AF10>>,
118+
PB10<Alternate<AF9>>,
119+
PC11<Alternate<AF9>>,
120+
PE11<Alternate<AF11>>,
121+
PG6<Alternate<AF10>>
122+
]
123+
IO0: [
124+
PA2<Alternate<AF6>>,
125+
PB1<Alternate<AF4>>,
126+
PB12<Alternate<AF12>>,
127+
PC3<Alternate<AF9>>,
128+
PC3<Alternate<AF0>>,
129+
PC9<Alternate<AF9>>,
130+
PD11<Alternate<AF9>>,
131+
PF8<Alternate<AF10>>
132+
]
133+
IO1: [
134+
PB0<Alternate<AF4>>,
135+
PC10<Alternate<AF9>>,
136+
PD12<Alternate<AF9>>,
137+
PF9<Alternate<AF10>>
138+
]
139+
IO2: [
140+
PA3<Alternate<AF6>>,
141+
PA7<Alternate<AF10>>,
142+
PB13<Alternate<AF4>>,
143+
PC2<Alternate<AF9>>,
144+
PC2<Alternate<AF0>>,
145+
PE2<Alternate<AF9>>,
146+
PF7<Alternate<AF10>>
147+
]
148+
IO3: [
149+
PA1<Alternate<AF9>>,
150+
PA6<Alternate<AF6>>,
151+
PD13<Alternate<AF9>>,
152+
PF6<Alternate<AF10>>
153+
]
154+
IO4: [
155+
PC1<Alternate<AF10>>,
156+
PD4<Alternate<AF10>>,
157+
PE7<Alternate<AF10>>,
158+
PH2<Alternate<AF9>>
159+
]
160+
IO5: [
161+
PC2<Alternate<AF4>>,
162+
PC2<Alternate<AF0>>,
163+
PD5<Alternate<AF10>>,
164+
PE8<Alternate<AF10>>,
165+
PH3<Alternate<AF9>>
166+
]
167+
IO6: [
168+
PC3<Alternate<AF4>>,
169+
PC3<Alternate<AF0>>,
170+
PD6<Alternate<AF10>>,
171+
PE9<Alternate<AF10>>,
172+
PG9<Alternate<AF9>>
173+
]
174+
IO7: [
175+
PD7<Alternate<AF10>>,
176+
PE10<Alternate<AF10>>,
177+
PG14<Alternate<AF9>>
178+
]
179+
}
180+
pins! {
181+
OCTOSPI2:
182+
CLK: [
183+
PF4<Alternate<AF9>>
184+
]
185+
NCLK: [
186+
PF5<Alternate<AF9>>
187+
]
188+
DQS: [
189+
PF12<Alternate<AF9>>,
190+
PG7<Alternate<AF9>>,
191+
PG15<Alternate<AF9>>
192+
]
193+
NCS: [
194+
PG12<Alternate<AF3>>
195+
]
196+
IO0: [
197+
PF0<Alternate<AF9>>
198+
]
199+
IO1: [
200+
PF1<Alternate<AF9>>
201+
]
202+
IO2: [
203+
PF2<Alternate<AF9>>
204+
]
205+
IO3: [
206+
PF3<Alternate<AF9>>
207+
]
208+
IO4: [
209+
PG0<Alternate<AF9>>
210+
]
211+
IO5: [
212+
PG1<Alternate<AF9>>
213+
]
214+
IO6: [
215+
PG10<Alternate<AF3>>
216+
]
217+
IO7: [
218+
PG11<Alternate<AF9>>
219+
]
220+
}
209221

210222
pub trait OctospiExt<OSPI>: Sized {
211223
/// The `ResetEnable` singleton for this peripheral

0 commit comments

Comments
 (0)