Skip to content

Commit 80ff707

Browse files
Merge pull request #5210 from bcostm/L4_add_adc_calib
STM32: add ADC calibration for L4, F1, F3 devices
2 parents 5c3ce0a + fca9714 commit 80ff707

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

targets/TARGET_STM/TARGET_STM32F1/analogin_api.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "mbed_wait_api.h"
3434
#include "cmsis.h"
3535
#include "pinmap.h"
36+
#include "mbed_error.h"
3637
#include "PeripheralPins.h"
3738

3839
int adc_inited = 0;
@@ -93,7 +94,13 @@ void analogin_init(analogin_t *obj, PinName pin)
9394
obj->handle.Init.DiscontinuousConvMode = DISABLE;
9495
obj->handle.Init.NbrOfDiscConversion = 0;
9596
obj->handle.Init.ExternalTrigConv = ADC_SOFTWARE_START;
96-
HAL_ADC_Init(&obj->handle);
97+
98+
if (HAL_ADC_Init(&obj->handle) != HAL_OK) {
99+
error("Cannot initialize ADC\n");
100+
}
101+
102+
// Calibrate ADC
103+
HAL_ADCEx_Calibration_Start(&obj->handle);
97104
}
98105
}
99106

targets/TARGET_STM/TARGET_STM32F3/analogin_api.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@ void analogin_init(analogin_t *obj, PinName pin)
130130
if (HAL_ADC_Init(&obj->handle) != HAL_OK) {
131131
error("Cannot initialize ADC");
132132
}
133+
134+
// Calibrate ADC
135+
HAL_ADCEx_Calibration_Start(&obj->handle, ADC_SINGLE_ENDED);
133136
}
134137

135138
static inline uint16_t adc_read(analogin_t *obj)

targets/TARGET_STM/TARGET_STM32L4/analogin_api.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ void analogin_init(analogin_t *obj, PinName pin)
9696
if (HAL_ADC_Init(&obj->handle) != HAL_OK) {
9797
error("Cannot initialize ADC\n");
9898
}
99+
100+
// Calibrate ADC
101+
HAL_ADCEx_Calibration_Start(&obj->handle, ADC_SINGLE_ENDED);
99102
}
100103
}
101104

0 commit comments

Comments
 (0)