27
27
static const PinMap PinMap_ADC [] = {
28
28
{PTC2 , ADC0_SE4b , 0 },
29
29
{PTC8 , ADC1_SE4b , 0 },
30
- {PTC9 , ADC0_SE5b , 0 },
30
+ {PTC9 , ADC1_SE5b , 0 },
31
31
{PTD1 , ADC0_SE5b , 0 },
32
- {PTC10 , ADC0_SE6b , 0 },
32
+ {PTC10 , ADC1_SE6b , 0 },
33
33
{PTD5 , ADC0_SE6b , 0 },
34
- {PTC11 , ADC0_SE7b , 0 },
35
- {PTD7 , ADC0_SE7b , 0 },
34
+ {PTC11 , ADC1_SE7b , 0 },
35
+ {PTD6 , ADC0_SE7b , 0 },
36
36
{PTB0 , ADC0_SE8 , 0 },
37
37
{PTB1 , ADC0_SE9 , 0 },
38
38
{PTB2 , ADC0_SE12 , 0 },
@@ -41,9 +41,9 @@ static const PinMap PinMap_ADC[] = {
41
41
{PTB10 , ADC1_SE14 , 0 },
42
42
{PTB11 , ADC1_SE15 , 0 },
43
43
{PTC1 , ADC0_SE15 , 0 },
44
- {PTE24 , ADC0_SE17 , 0 },
45
44
{PTA17 , ADC1_SE17 , 0 },
46
- {PTE25 , ADC0_SE18 , 0 },
45
+ //{PTE24, ADC0_SE17, 0}, //I2C pull up
46
+ //{PTE25, ADC0_SE18, 0}, //I2C pull up
47
47
{NC , NC , 0 }
48
48
};
49
49
@@ -63,30 +63,29 @@ void analogin_init(analogin_t *obj, PinName pin) {
63
63
if ((bus_clock >> clkdiv ) <= MAX_FADC )
64
64
break ;
65
65
}
66
- if (clkdiv == 4 ) {//Set max div
67
- clkdiv = 0x7 ;
66
+ if (clkdiv == 4 ) {
67
+ clkdiv = 0x7 ; //Set max div
68
68
}
69
-
69
+ /* adc is enabled/triggered when reading. */
70
70
adc_hal_set_clock_source_mode (instance , (adc_clock_source_mode_t )(clkdiv >> 2 ));
71
71
adc_hal_set_clock_divider_mode (instance , (adc_clock_divider_mode_t )(clkdiv & 0x3 ));
72
72
adc_hal_set_reference_voltage_mode (instance , kAdcVoltageVref );
73
73
adc_hal_set_resolution_mode (instance , kAdcSingleDiff16 );
74
74
adc_hal_configure_continuous_conversion (instance , false);
75
+ adc_hal_configure_hw_trigger (instance , false); /* sw trigger */
76
+ adc_hal_configure_hw_average (instance , true);
77
+ adc_hal_set_hw_average_mode (instance , kAdcHwAverageCount4 );
78
+ adc_hal_set_group_mux (instance , kAdcChannelMuxB ); /* only B channels are avail */
75
79
76
- adc_group_mux_mode_t mode = (obj -> adc & (1 << ADC_B_CHANNEL_SHIFT )) ?
77
- kAdcChannelMuxB : kAdcChannelMuxA ;
78
- adc_hal_disable (instance , mode );
79
- adc_hal_set_group_mux (instance , mode );
80
- adc_hal_enable (instance , mode , (adc_channel_mode_t )(obj -> adc & 0xF ), false);
80
+ pinmap_pinout (pin , PinMap_ADC );
81
81
}
82
82
83
83
uint16_t analogin_read_u16 (analogin_t * obj ) {
84
84
uint32_t instance = obj -> adc >> ADC_INSTANCE_SHIFT ;
85
- adc_group_mux_mode_t mode = (obj -> adc & (1 << ADC_B_CHANNEL_SHIFT )) ?
86
- kAdcChannelMuxB : kAdcChannelMuxA ;
87
- adc_hal_enable (instance , mode , (adc_channel_mode_t )(obj -> adc & 0xF ), false);
88
- while (!adc_hal_is_conversion_completed (instance , mode ));
89
- return adc_hal_get_conversion_value (instance , mode );
85
+ /* sw trigger (SC1A) */
86
+ adc_hal_enable (instance , 0 , (adc_channel_mode_t )(obj -> adc & 0xF ), false);
87
+ while (!adc_hal_is_conversion_completed (instance , 0 ));
88
+ return adc_hal_get_conversion_value (instance , 0 );
90
89
}
91
90
92
91
float analogin_read (analogin_t * obj ) {
0 commit comments