summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-09-20 23:51:33 +1000
committerDamien George <damien.p.george@gmail.com>2018-09-20 23:51:33 +1000
commitcb3c66e79358f03367d0b4e5d2b6ec649ac29733 (patch)
tree437aafb66f0889e9e4b181aaaa690d6fc6432527
parent3220cedc31f2ce161286baf58cfdfd396697348a (diff)
stm32/adc: Increase sample time for internal sensors on L4 MCUs.
They need time (around 4us for VREFINT) to obtain accurate results. Fixes issue #4022.
-rw-r--r--ports/stm32/adc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/ports/stm32/adc.c b/ports/stm32/adc.c
index c20e1bca4..f16159bef 100644
--- a/ports/stm32/adc.c
+++ b/ports/stm32/adc.c
@@ -304,7 +304,13 @@ STATIC void adc_config_channel(ADC_HandleTypeDef *adc_handle, uint32_t channel)
sConfig.OffsetRightShift = DISABLE;
sConfig.OffsetSignedSaturation = DISABLE;
#elif defined(STM32L4)
- sConfig.SamplingTime = ADC_SAMPLETIME_12CYCLES_5;
+ if (channel == ADC_CHANNEL_VREFINT
+ || channel == ADC_CHANNEL_TEMPSENSOR
+ || channel == ADC_CHANNEL_VBAT) {
+ sConfig.SamplingTime = ADC_SAMPLETIME_247CYCLES_5;
+ } else {
+ sConfig.SamplingTime = ADC_SAMPLETIME_12CYCLES_5;
+ }
sConfig.SingleDiff = ADC_SINGLE_ENDED;
sConfig.OffsetNumber = ADC_OFFSET_NONE;
sConfig.Offset = 0;