@@ -14,7 +14,11 @@ use embedded_hal::adc::{Channel, OneShot};
14
14
15
15
use crate :: {
16
16
gpio:: { self , Analog } ,
17
- pac:: { adc1:: cfgr:: ALIGN_A , adc1_2:: ccr:: CKMODE_A , ADC1 , ADC1_2 , ADC2 } ,
17
+ pac:: {
18
+ adc1:: { cfgr:: ALIGN_A , smpr1:: SMP9_A , smpr2:: SMP18_A } ,
19
+ adc1_2:: ccr:: CKMODE_A ,
20
+ ADC1 , ADC1_2 , ADC2 ,
21
+ } ,
18
22
rcc:: { Clocks , AHB } ,
19
23
} ;
20
24
@@ -73,18 +77,32 @@ impl Default for SampleTime {
73
77
}
74
78
}
75
79
76
- impl SampleTime {
77
- /// Conversion to bits for SMP
78
- fn bitcode ( & self ) -> u8 {
79
- match self {
80
- SampleTime :: T_1 => 0b000 ,
81
- SampleTime :: T_2 => 0b001 ,
82
- SampleTime :: T_4 => 0b010 ,
83
- SampleTime :: T_7 => 0b011 ,
84
- SampleTime :: T_19 => 0b100 ,
85
- SampleTime :: T_61 => 0b101 ,
86
- SampleTime :: T_181 => 0b110 ,
87
- SampleTime :: T_601 => 0b111 ,
80
+ impl From < SampleTime > for SMP9_A {
81
+ fn from ( t : SampleTime ) -> Self {
82
+ match t {
83
+ SampleTime :: T_1 => Self :: CYCLES1_5 ,
84
+ SampleTime :: T_2 => Self :: CYCLES2_5 ,
85
+ SampleTime :: T_4 => Self :: CYCLES4_5 ,
86
+ SampleTime :: T_7 => Self :: CYCLES7_5 ,
87
+ SampleTime :: T_19 => Self :: CYCLES19_5 ,
88
+ SampleTime :: T_61 => Self :: CYCLES61_5 ,
89
+ SampleTime :: T_181 => Self :: CYCLES181_5 ,
90
+ SampleTime :: T_601 => Self :: CYCLES601_5 ,
91
+ }
92
+ }
93
+ }
94
+
95
+ impl From < SampleTime > for SMP18_A {
96
+ fn from ( t : SampleTime ) -> Self {
97
+ match t {
98
+ SampleTime :: T_1 => Self :: CYCLES1_5 ,
99
+ SampleTime :: T_2 => Self :: CYCLES2_5 ,
100
+ SampleTime :: T_4 => Self :: CYCLES4_5 ,
101
+ SampleTime :: T_7 => Self :: CYCLES7_5 ,
102
+ SampleTime :: T_19 => Self :: CYCLES19_5 ,
103
+ SampleTime :: T_61 => Self :: CYCLES61_5 ,
104
+ SampleTime :: T_181 => Self :: CYCLES181_5 ,
105
+ SampleTime :: T_601 => Self :: CYCLES601_5 ,
88
106
}
89
107
}
90
108
}
@@ -488,23 +506,23 @@ macro_rules! adc_hal {
488
506
// TODO: there are boundaries on how this can be set depending on the hardware.
489
507
fn set_chan_smps( & self , chan: u8 , smp: SampleTime ) {
490
508
match chan {
491
- 1 => self . rb. smpr1. modify( |_, w| w. smp1( ) . bits ( smp. bitcode ( ) ) ) ,
492
- 2 => self . rb. smpr1. modify( |_, w| w. smp2( ) . bits ( smp. bitcode ( ) ) ) ,
493
- 3 => self . rb. smpr1. modify( |_, w| w. smp3( ) . bits ( smp. bitcode ( ) ) ) ,
494
- 4 => self . rb. smpr1. modify( |_, w| w. smp4( ) . bits ( smp. bitcode ( ) ) ) ,
495
- 5 => self . rb. smpr1. modify( |_, w| w. smp5( ) . bits ( smp. bitcode ( ) ) ) ,
496
- 6 => self . rb. smpr1. modify( |_, w| w. smp6( ) . bits ( smp. bitcode ( ) ) ) ,
497
- 7 => self . rb. smpr1. modify( |_, w| w. smp7( ) . bits ( smp. bitcode ( ) ) ) ,
498
- 8 => self . rb. smpr1. modify( |_, w| w. smp8( ) . bits ( smp. bitcode ( ) ) ) ,
499
- 9 => self . rb. smpr1. modify( |_, w| w. smp9( ) . bits ( smp. bitcode ( ) ) ) ,
500
- 11 => self . rb. smpr2. modify( |_, w| w. smp10( ) . bits ( smp. bitcode ( ) ) ) ,
501
- 12 => self . rb. smpr2. modify( |_, w| w. smp12( ) . bits ( smp. bitcode ( ) ) ) ,
502
- 13 => self . rb. smpr2. modify( |_, w| w. smp13( ) . bits ( smp. bitcode ( ) ) ) ,
503
- 14 => self . rb. smpr2. modify( |_, w| w. smp14( ) . bits ( smp. bitcode ( ) ) ) ,
504
- 15 => self . rb. smpr2. modify( |_, w| w. smp15( ) . bits ( smp. bitcode ( ) ) ) ,
505
- 16 => self . rb. smpr2. modify( |_, w| w. smp16( ) . bits ( smp. bitcode ( ) ) ) ,
506
- 17 => self . rb. smpr2. modify( |_, w| w. smp17( ) . bits ( smp. bitcode ( ) ) ) ,
507
- 18 => self . rb. smpr2. modify( |_, w| w. smp18( ) . bits ( smp. bitcode ( ) ) ) ,
509
+ 1 => self . rb. smpr1. modify( |_, w| w. smp1( ) . variant ( smp. into ( ) ) ) ,
510
+ 2 => self . rb. smpr1. modify( |_, w| w. smp2( ) . variant ( smp. into ( ) ) ) ,
511
+ 3 => self . rb. smpr1. modify( |_, w| w. smp3( ) . variant ( smp. into ( ) ) ) ,
512
+ 4 => self . rb. smpr1. modify( |_, w| w. smp4( ) . variant ( smp. into ( ) ) ) ,
513
+ 5 => self . rb. smpr1. modify( |_, w| w. smp5( ) . variant ( smp. into ( ) ) ) ,
514
+ 6 => self . rb. smpr1. modify( |_, w| w. smp6( ) . variant ( smp. into ( ) ) ) ,
515
+ 7 => self . rb. smpr1. modify( |_, w| w. smp7( ) . variant ( smp. into ( ) ) ) ,
516
+ 8 => self . rb. smpr1. modify( |_, w| w. smp8( ) . variant ( smp. into ( ) ) ) ,
517
+ 9 => self . rb. smpr1. modify( |_, w| w. smp9( ) . variant ( smp. into ( ) ) ) ,
518
+ 11 => self . rb. smpr2. modify( |_, w| w. smp10( ) . variant ( smp. into ( ) ) ) ,
519
+ 12 => self . rb. smpr2. modify( |_, w| w. smp12( ) . variant ( smp. into ( ) ) ) ,
520
+ 13 => self . rb. smpr2. modify( |_, w| w. smp13( ) . variant ( smp. into ( ) ) ) ,
521
+ 14 => self . rb. smpr2. modify( |_, w| w. smp14( ) . variant ( smp. into ( ) ) ) ,
522
+ 15 => self . rb. smpr2. modify( |_, w| w. smp15( ) . variant ( smp. into ( ) ) ) ,
523
+ 16 => self . rb. smpr2. modify( |_, w| w. smp16( ) . variant ( smp. into ( ) ) ) ,
524
+ 17 => self . rb. smpr2. modify( |_, w| w. smp17( ) . variant ( smp. into ( ) ) ) ,
525
+ 18 => self . rb. smpr2. modify( |_, w| w. smp18( ) . variant ( smp. into ( ) ) ) ,
508
526
_ => crate :: unreachable!( ) ,
509
527
} ;
510
528
}
0 commit comments