Skip to content

Commit 880e02f

Browse files
authored
Merge pull request #337 from Sh3Rm4n/fix-adc
2 parents ad2f0b9 + 604e299 commit 880e02f

File tree

4 files changed

+67
-4
lines changed

4 files changed

+67
-4
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
2323
([#334])
2424
- Add `impl From<Toggle> for Switch` to reduce churn.
2525

26+
### Added
27+
28+
- Add missing ADC channels ([#337])
29+
2630
## [v0.9.1] - 2022-09-07
2731

2832
### Added
@@ -573,6 +577,7 @@ let clocks = rcc
573577
[defmt]: https://github.com/knurling-rs/defmt
574578
[filter]: https://defmt.ferrous-systems.com/filtering.html
575579

580+
[#337]: https://github.com/stm32-rs/stm32f3xx-hal/pull/337
576581
[#335]: https://github.com/stm32-rs/stm32f3xx-hal/pull/335
577582
[#334]: https://github.com/stm32-rs/stm32f3xx-hal/pull/334
578583
[#322]: https://github.com/stm32-rs/stm32f3xx-hal/pull/322

codegen/tools/adc_channel.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,35 @@
3838
"stm32f334": r".*STM32F334.*\.xml",
3939
}
4040

41+
def channel_to_id(channel: int) -> str:
42+
id_ = "Id::"
43+
match channel:
44+
case 0:
45+
return id_ + "Zero"
46+
case 1:
47+
return id_ + "One"
48+
case 2:
49+
return id_ + "Two"
50+
case 3:
51+
return id_ + "Three"
52+
case 4: return id_ + "Four"
53+
case 5: return id_ + "Five"
54+
case 6: return id_ + "Six"
55+
case 7: return id_ + "Seven"
56+
case 8: return id_ + "Eight"
57+
case 9: return id_ + "Nine"
58+
case 10: return id_ + "Ten"
59+
case 11: return id_ + "Eleven"
60+
case 12: return id_ + "Twelve"
61+
case 13: return id_ + "Thirteen"
62+
case 14: return id_ + "Fourteen"
63+
case 15: return id_ + "Fifteen"
64+
case 16: return id_ + "Sixteen"
65+
case 17: return id_ + "Seventeen"
66+
case 18: return id_ + "Eighteen"
67+
68+
raise Exception(f"Channel: \"{channel}\" does not exists")
69+
4170

4271
def main():
4372
chip_post = {}
@@ -52,7 +81,7 @@ def main():
5281
(adc, channel) = pin[i].split("_")
5382
except IndexError:
5483
continue
55-
adc_list.append((adc, int(channel)))
84+
adc_list.append((adc, channel_to_id(int(channel))))
5685
pins.append((pin[0], adc_list))
5786
chip_post[chip_name] = pins
5887

codegen/tools/adc_channel.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ for xml in /opt/stm32cubemx/db/mcu/STM32F3*.xml; do
1414
xq '.Mcu.Pin[]
1515
| select(.Signal[]?."@Name"? | startswith("ADC"))
1616
| [."@Name", (.Signal[]? | select(."@Name" | startswith("ADC")))."@Name"]
17-
| @csv' --raw-output < $xml \
18-
| rg -v EXTI \
19-
| rg -v OSC32 \
17+
| @csv' --raw-output \
18+
< "$xml" \
19+
| sed -e 's/,"ADC[[:digit:]]_EXTI[[:digit:]]\+"//g' \
20+
| sed -e 's/-OSC32_OUT//g' \
21+
| rg 'IN' \
2022
| rg -v 'jq:' \
2123
| sed 's/IN//g' \
2224
| sort -u \

src/adc/channel.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ cfg_if::cfg_if! {
152152
(PA6, [(ADC1, Id::Ten)]),
153153
(PA7, [(ADC1, Id::Fifteen)]),
154154
(PB0, [(ADC1, Id::Eleven)]),
155+
(PB11, [(ADC1, Id::Fourteen)]),
155156
(PB13, [(ADC1, Id::Thirteen)]),
156157
(PB1, [(ADC1, Id::Twelve)]),
157158
(PC0, [(ADC1, Id::Six)]),
@@ -169,6 +170,7 @@ cfg_if::cfg_if! {
169170
(PA6, [(ADC1, Id::Ten)]),
170171
(PA7, [(ADC1, Id::Fifteen)]),
171172
(PB0, [(ADC1, Id::Eleven)]),
173+
(PB11, [(ADC1, Id::Fourteen)]),
172174
(PB13, [(ADC1, Id::Thirteen)]),
173175
(PB1, [(ADC1, Id::Twelve)]),
174176
(PC0, [(ADC1, Id::Six)]),
@@ -220,6 +222,7 @@ cfg_if::cfg_if! {
220222
channel!([
221223
(PA0, [(ADC1, Id::One)]),
222224
(PA1, [(ADC1, Id::Two)]),
225+
(PA2, [(ADC1, Id::Three)]),
223226
(PA3, [(ADC1, Id::Four)]),
224227
(PA4, [(ADC2, Id::One)]),
225228
(PA5, [(ADC2, Id::Two)]),
@@ -229,9 +232,12 @@ cfg_if::cfg_if! {
229232
(PB12, [(ADC4, Id::Three)]),
230233
(PB13, [(ADC3, Id::Five)]),
231234
(PB14, [(ADC4, Id::Four)]),
235+
(PB15, [(ADC4, Id::Five)]),
232236
(PB1, [(ADC3, Id::One)]),
237+
(PB2, [(ADC2, Id::Twelve)]),
233238
(PC0, [(ADC1, Id::Six), (ADC2, Id::Six)]),
234239
(PC1, [(ADC1, Id::Seven), (ADC2, Id::Seven)]),
240+
(PC2, [(ADC1, Id::Eight), (ADC2, Id::Eight)]),
235241
(PC3, [(ADC1, Id::Nine), (ADC2, Id::Nine)]),
236242
(PC4, [(ADC2, Id::Five)]),
237243
(PC5, [(ADC2, Id::Eleven)]),
@@ -247,6 +253,7 @@ cfg_if::cfg_if! {
247253
(PA5, [(ADC2, Id::Two)]),
248254
(PA6, [(ADC2, Id::Three)]),
249255
(PA7, [(ADC2, Id::Four)]),
256+
(PB11, [(ADC1, Id::Fourteen), (ADC2, Id::Fourteen)]),
250257
(PB2, [(ADC2, Id::Twelve)]),
251258
(PC0, [(ADC1, Id::Six), (ADC2, Id::Six)]),
252259
(PC1, [(ADC1, Id::Seven), (ADC2, Id::Seven)]),
@@ -261,29 +268,37 @@ cfg_if::cfg_if! {
261268
channel!([
262269
(PA0, [(ADC1, Id::One)]),
263270
(PA1, [(ADC1, Id::Two)]),
271+
(PA2, [(ADC1, Id::Three)]),
264272
(PA3, [(ADC1, Id::Four)]),
265273
(PA4, [(ADC2, Id::One)]),
266274
(PA5, [(ADC2, Id::Two)]),
267275
(PA6, [(ADC2, Id::Three)]),
268276
(PA7, [(ADC2, Id::Four)]),
269277
(PB0, [(ADC3, Id::Twelve)]),
278+
(PB11, [(ADC1, Id::Fourteen), (ADC2, Id::Fourteen)]),
270279
(PB12, [(ADC4, Id::Three)]),
271280
(PB13, [(ADC3, Id::Five)]),
272281
(PB14, [(ADC4, Id::Four)]),
282+
(PB15, [(ADC4, Id::Five)]),
273283
(PB1, [(ADC3, Id::One)]),
284+
(PB2, [(ADC2, Id::Twelve)]),
274285
(PC0, [(ADC1, Id::Six), (ADC2, Id::Six)]),
275286
(PC1, [(ADC1, Id::Seven), (ADC2, Id::Seven)]),
287+
(PC2, [(ADC1, Id::Eight), (ADC2, Id::Eight)]),
276288
(PC3, [(ADC1, Id::Nine), (ADC2, Id::Nine)]),
277289
(PC4, [(ADC2, Id::Five)]),
278290
(PC5, [(ADC2, Id::Eleven)]),
279291
(PD10, [(ADC3, Id::Seven), (ADC4, Id::Seven)]),
292+
(PD11, [(ADC3, Id::Eight), (ADC4, Id::Eight)]),
280293
(PD12, [(ADC3, Id::Nine), (ADC4, Id::Nine)]),
281294
(PD13, [(ADC3, Id::Ten), (ADC4, Id::Ten)]),
282295
(PD14, [(ADC3, Id::Eleven), (ADC4, Id::Eleven)]),
283296
(PD9, [(ADC4, Id::Thirteen)]),
297+
(PE11, [(ADC3, Id::Fifteen)]),
284298
(PE12, [(ADC3, Id::Sixteen)]),
285299
(PE7, [(ADC3, Id::Thirteen)]),
286300
(PE8, [(ADC3, Id::Six), (ADC4, Id::Six)]),
301+
(PF2, [(ADC1, Id::Ten), (ADC2, Id::Ten)]),
287302
]);
288303
} else if #[cfg(feature = "stm32f328")] {
289304
channel!([
@@ -306,6 +321,7 @@ cfg_if::cfg_if! {
306321
channel!([
307322
(PA0, [(ADC1, Id::One)]),
308323
(PA1, [(ADC1, Id::Two)]),
324+
(PA2, [(ADC1, Id::Three)]),
309325
(PA3, [(ADC1, Id::Four)]),
310326
(PA4, [(ADC2, Id::One)]),
311327
(PA5, [(ADC2, Id::Two)]),
@@ -315,9 +331,11 @@ cfg_if::cfg_if! {
315331
(PB12, [(ADC4, Id::Three)]),
316332
(PB13, [(ADC3, Id::Five)]),
317333
(PB14, [(ADC4, Id::Four)]),
334+
(PB15, [(ADC4, Id::Five)]),
318335
(PB1, [(ADC3, Id::One)]),
319336
(PC0, [(ADC1, Id::Six), (ADC2, Id::Six)]),
320337
(PC1, [(ADC1, Id::Seven), (ADC2, Id::Seven)]),
338+
(PC2, [(ADC1, Id::Eight), (ADC2, Id::Eight)]),
321339
(PC3, [(ADC1, Id::Nine), (ADC2, Id::Nine)]),
322340
(PC4, [(ADC2, Id::Five)]),
323341
(PC5, [(ADC2, Id::Eleven)]),
@@ -327,34 +345,42 @@ cfg_if::cfg_if! {
327345
channel!([
328346
(PA0, [(ADC1, Id::One)]),
329347
(PA1, [(ADC1, Id::Two)]),
348+
(PA2, [(ADC1, Id::Three)]),
330349
(PA3, [(ADC1, Id::Four)]),
331350
(PA4, [(ADC2, Id::One)]),
332351
(PA5, [(ADC2, Id::Two)]),
333352
(PA6, [(ADC2, Id::Three)]),
334353
(PA7, [(ADC2, Id::Four)]),
335354
(PB0, [(ADC3, Id::Twelve)]),
355+
(PB11, [(ADC1, Id::Fourteen), (ADC2, Id::Fourteen)]),
336356
(PB12, [(ADC4, Id::Three)]),
337357
(PB13, [(ADC3, Id::Five)]),
338358
(PB14, [(ADC4, Id::Four)]),
359+
(PB15, [(ADC4, Id::Five)]),
339360
(PB1, [(ADC3, Id::One)]),
340361
(PC0, [(ADC1, Id::Six), (ADC2, Id::Six)]),
341362
(PC1, [(ADC1, Id::Seven), (ADC2, Id::Seven)]),
363+
(PC2, [(ADC1, Id::Eight), (ADC2, Id::Eight)]),
342364
(PC3, [(ADC1, Id::Nine), (ADC2, Id::Nine)]),
343365
(PC4, [(ADC2, Id::Five)]),
344366
(PC5, [(ADC2, Id::Eleven)]),
345367
(PD10, [(ADC3, Id::Seven), (ADC4, Id::Seven)]),
368+
(PD11, [(ADC3, Id::Eight), (ADC4, Id::Eight)]),
346369
(PD12, [(ADC3, Id::Nine), (ADC4, Id::Nine)]),
347370
(PD13, [(ADC3, Id::Ten), (ADC4, Id::Ten)]),
348371
(PD14, [(ADC3, Id::Eleven), (ADC4, Id::Eleven)]),
349372
(PD8, [(ADC4, Id::Twelve)]),
350373
(PD9, [(ADC4, Id::Thirteen)]),
351374
(PE10, [(ADC3, Id::Fourteen)]),
375+
(PE11, [(ADC3, Id::Fifteen)]),
352376
(PE12, [(ADC3, Id::Sixteen)]),
353377
(PE13, [(ADC3, Id::Three)]),
354378
(PE14, [(ADC4, Id::One)]),
379+
(PE15, [(ADC4, Id::Two)]),
355380
(PE7, [(ADC3, Id::Thirteen)]),
356381
(PE8, [(ADC3, Id::Six), (ADC4, Id::Six)]),
357382
(PE9, [(ADC3, Id::Two)]),
383+
(PF2, [(ADC1, Id::Ten), (ADC2, Id::Ten)]),
358384
]);
359385
} else if #[cfg(feature = "stm32f373")] {
360386
channel!([
@@ -382,6 +408,7 @@ cfg_if::cfg_if! {
382408
(PB12, [(ADC2, Id::Thirteen)]),
383409
(PB13, [(ADC1, Id::Thirteen)]),
384410
(PB14, [(ADC2, Id::Fourteen)]),
411+
(PB15, [(ADC2, Id::Fifteen)]),
385412
(PB1, [(ADC1, Id::Twelve)]),
386413
(PB2, [(ADC2, Id::Twelve)]),
387414
(PC3, [(ADC1, Id::Nine), (ADC2, Id::Nine)]),

0 commit comments

Comments
 (0)