Skip to content

Commit 63cf897

Browse files
committed
[NUCLEO_L053R8] Fix bug and improvement of AnalogIn
1 parent acf8952 commit 63cf897

File tree

1 file changed

+9
-2
lines changed
  • libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8

1 file changed

+9
-2
lines changed

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/analogin_api.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,16 @@ void analogin_init(analogin_t *obj, PinName pin) {
7373
if (adc_inited == 0) {
7474
adc_inited = 1;
7575

76+
AdcHandle.Instance = (ADC_TypeDef *)(obj->adc);
77+
7678
// Enable ADC clock
7779
__ADC1_CLK_ENABLE();
7880

7981
// Configure ADC
8082
AdcHandle.Init.OversamplingMode = DISABLE;
8183
AdcHandle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV2; // ADCCLK = 8 MHz (HSI 16 MHz / 2)
8284
AdcHandle.Init.Resolution = ADC_RESOLUTION12b;
83-
AdcHandle.Init.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
85+
AdcHandle.Init.SamplingTime = ADC_SAMPLETIME_7CYCLES_5;
8486
AdcHandle.Init.ScanDirection = ADC_SCAN_DIRECTION_UPWARD;
8587
AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT;
8688
AdcHandle.Init.ContinuousConvMode = DISABLE;
@@ -92,8 +94,13 @@ void analogin_init(analogin_t *obj, PinName pin) {
9294
AdcHandle.Init.Overrun = OVR_DATA_PRESERVED;
9395
AdcHandle.Init.LowPowerAutoWait = ENABLE;
9496
AdcHandle.Init.LowPowerFrequencyMode = DISABLE; // To be enabled only if ADC clock < 2.8 MHz
95-
AdcHandle.Init.LowPowerAutoOff = ENABLE;
97+
AdcHandle.Init.LowPowerAutoOff = DISABLE;
9698
HAL_ADC_Init(&AdcHandle);
99+
100+
// Calibration
101+
HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED);
102+
103+
__HAL_ADC_ENABLE(&AdcHandle);
97104
}
98105
}
99106

0 commit comments

Comments
 (0)