Skip to content

Commit d7932c2

Browse files
committed
STM32F0 ADC internal channels update
1 parent cb579cb commit d7932c2

File tree

2 files changed

+8
-10
lines changed

2 files changed

+8
-10
lines changed

targets/TARGET_STM/TARGET_STM32F0/analogin_device.c

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,9 @@
3535
#include "pinmap.h"
3636
#include "mbed_error.h"
3737
#include "PeripheralPins.h"
38-
#include <stdbool.h>
3938

4039
void analogin_init(analogin_t *obj, PinName pin)
4140
{
42-
static bool adc_calibrated = false;
4341
uint32_t function = (uint32_t)NC;
4442

4543
// ADC Internal Channels "pins" (Temperature, Vref, Vbat, ...)
@@ -89,9 +87,7 @@ void analogin_init(analogin_t *obj, PinName pin)
8987
error("Cannot initialize ADC");
9088
}
9189

92-
// ADC calibration is done only once
93-
if (!adc_calibrated) {
94-
adc_calibrated = true;
90+
if (!LL_ADC_REG_ReadConversionData6(obj->handle.Instance)) {
9591
HAL_ADCEx_Calibration_Start(&obj->handle);
9692
}
9793
}
@@ -102,11 +98,7 @@ uint16_t adc_read(analogin_t *obj)
10298

10399
// Configure ADC channel
104100
sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
105-
#if defined (TARGET_STM32F091RC)
106-
sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5;
107-
#else
108-
sConfig.SamplingTime = ADC_SAMPLETIME_7CYCLES_5;
109-
#endif
101+
sConfig.SamplingTime = ADC_SAMPLETIME_41CYCLES_5;
110102

111103
switch (obj->channel) {
112104
case 0:
@@ -159,13 +151,16 @@ uint16_t adc_read(analogin_t *obj)
159151
break;
160152
case 16:
161153
sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
154+
sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
162155
break;
163156
case 17:
164157
sConfig.Channel = ADC_CHANNEL_VREFINT;
158+
sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
165159
break;
166160
#ifdef ADC_CHANNEL_VBAT
167161
case 18:
168162
sConfig.Channel = ADC_CHANNEL_VBAT;
163+
sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
169164
break;
170165
#endif
171166
default:

targets/TARGET_STM/TARGET_STM32F0/device/stm32f0xx_hal_adc.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
/* Includes ------------------------------------------------------------------*/
4545
#include "stm32f0xx_hal_def.h"
4646

47+
/* Include low level driver */
48+
#include "stm32f0xx_ll_adc.h"
49+
4750
/** @addtogroup STM32F0xx_HAL_Driver
4851
* @{
4952
*/

0 commit comments

Comments
 (0)