1
1
/* mbed Microcontroller Library
2
- * Copyright (c) 2015 , STMicroelectronics
2
+ * Copyright (c) 2016 , STMicroelectronics
3
3
* All rights reserved.
4
4
*
5
5
* Redistribution and use in source and binary forms, with or without
@@ -58,8 +58,10 @@ void analogin_init(analogin_t *obj, PinName pin)
58
58
MBED_ASSERT (function != (uint32_t )NC );
59
59
obj -> channel = STM_PIN_CHANNEL (function );
60
60
61
- // Configure GPIO
62
- pinmap_pinout (pin , PinMap_ADC );
61
+ // Configure GPIO excepted for internal channels (Temperature, Vref, Vbat)
62
+ if ((obj -> channel != 16 ) && (obj -> channel != 17 ) && (obj -> channel != 18 )) {
63
+ pinmap_pinout (pin , PinMap_ADC );
64
+ }
63
65
64
66
// Save pin number for the read function
65
67
obj -> pin = pin ;
@@ -101,6 +103,7 @@ void analogin_init(analogin_t *obj, PinName pin)
101
103
AdcHandle .Init .NbrOfConversion = 1 ;
102
104
AdcHandle .Init .DMAContinuousRequests = DISABLE ;
103
105
AdcHandle .Init .EOCSelection = DISABLE ;
106
+
104
107
if (HAL_ADC_Init (& AdcHandle ) != HAL_OK ) {
105
108
error ("Cannot initialize ADC\n" );
106
109
}
@@ -114,7 +117,7 @@ static inline uint16_t adc_read(analogin_t *obj)
114
117
115
118
// Configure ADC channel
116
119
sConfig .Rank = 1 ;
117
- sConfig .SamplingTime = ADC_SAMPLETIME_3CYCLES ;
120
+ sConfig .SamplingTime = ADC_SAMPLETIME_15CYCLES ;
118
121
sConfig .Offset = 0 ;
119
122
120
123
switch (obj -> channel ) {
@@ -166,6 +169,15 @@ static inline uint16_t adc_read(analogin_t *obj)
166
169
case 15 :
167
170
sConfig .Channel = ADC_CHANNEL_15 ;
168
171
break ;
172
+ case 16 :
173
+ sConfig .Channel = ADC_CHANNEL_16 ;
174
+ break ;
175
+ case 17 :
176
+ sConfig .Channel = ADC_CHANNEL_17 ;
177
+ break ;
178
+ case 18 :
179
+ sConfig .Channel = ADC_CHANNEL_18 ;
180
+ break ;
169
181
default :
170
182
return 0 ;
171
183
}
0 commit comments