From 2154ee21635c85baf07e50ca1bfaf8c89cae192a Mon Sep 17 00:00:00 2001 From: yn386 Date: Sat, 22 Oct 2022 16:56:56 +0900 Subject: [PATCH] stm32/adc: Fix reading internal ADC channels on L4 MCUs. For STM32L4 series, the internal sensors are connected to: - ADC1_IN0: Internal voltage reference - ADC1_IN17: Temperature sensor - ADC1_IN18: VBAT battery voltage monitoring but ADC_CHANNEL_VREFINT, ADC_CHANNEL_VBAT, ADC_CHANNEL_TEMPSENSOR are not defined as 0, 17, 18. This commit converts channel 0, 17, 18 to ADC_CHANNEL_x in adc_get_internal_channel(). --- ports/stm32/adc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ports/stm32/adc.c b/ports/stm32/adc.c index 02bbbb58db..5aa7ce4262 100644 --- a/ports/stm32/adc.c +++ b/ports/stm32/adc.c @@ -216,6 +216,14 @@ static inline uint32_t adc_get_internal_channel(uint32_t channel) { if (channel == 16) { channel = ADC_CHANNEL_TEMPSENSOR; } + #elif defined(STM32L4) + if (channel == 0) { + channel = ADC_CHANNEL_VREFINT; + } else if (channel == 17) { + channel = ADC_CHANNEL_TEMPSENSOR; + } else if (channel == 18) { + channel = ADC_CHANNEL_VBAT; + } #endif return channel; }