mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
Diff: targets/TARGET_STM/TARGET_STM32F0/analogin_device.c
- Revision:
- 186:707f6e361f3e
- Parent:
- 180:96ed750bd169
--- a/targets/TARGET_STM/TARGET_STM32F0/analogin_device.c Thu Apr 19 17:12:19 2018 +0100 +++ b/targets/TARGET_STM/TARGET_STM32F0/analogin_device.c Fri Jun 22 16:45:37 2018 +0100 @@ -35,11 +35,9 @@ #include "pinmap.h" #include "mbed_error.h" #include "PeripheralPins.h" -#include <stdbool.h> void analogin_init(analogin_t *obj, PinName pin) { - static bool adc_calibrated = false; uint32_t function = (uint32_t)NC; // ADC Internal Channels "pins" (Temperature, Vref, Vbat, ...) @@ -89,9 +87,7 @@ error("Cannot initialize ADC"); } - // ADC calibration is done only once - if (!adc_calibrated) { - adc_calibrated = true; + if (!LL_ADC_REG_ReadConversionData6(obj->handle.Instance)) { HAL_ADCEx_Calibration_Start(&obj->handle); } } @@ -102,11 +98,7 @@ // Configure ADC channel sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; -#if defined (TARGET_STM32F091RC) - sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5; -#else - sConfig.SamplingTime = ADC_SAMPLETIME_7CYCLES_5; -#endif + sConfig.SamplingTime = ADC_SAMPLETIME_41CYCLES_5; switch (obj->channel) { case 0: @@ -159,13 +151,16 @@ break; case 16: sConfig.Channel = ADC_CHANNEL_TEMPSENSOR; + sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5; break; case 17: sConfig.Channel = ADC_CHANNEL_VREFINT; + sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5; break; #ifdef ADC_CHANNEL_VBAT case 18: sConfig.Channel = ADC_CHANNEL_VBAT; + sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5; break; #endif default: