From d9764ad1408f4cdf981a1e0f4db380a4cb4fe94c Mon Sep 17 00:00:00 2001 From: Yuuki NAGAO Date: Sat, 8 Jul 2023 11:04:20 +0900 Subject: [PATCH] stm32/adc: Fix reading internal ADC channels on G4 MCUs. For STM32G4 series, the internal sensors are connected to: - ADC1_IN16: Temperature sensor - ADC1_IN17: Battery voltage monitoring - ADC1_IN18: Internal voltage reference but ADC_CHANNEL_TEMPSENSOR_ADC1, ADC_CHANNEL_VBAT, ADC_CHANNEL_VREFINT are not defined as 16, 17, 18. This commit converts channel 16, 17, 18 to ADC_CHANNEL_x in adc_get_internal_channel(). Signed-off-by: Yuuki NAGAO --- ports/stm32/adc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ports/stm32/adc.c b/ports/stm32/adc.c index fc0882286c..93eaa93f02 100644 --- a/ports/stm32/adc.c +++ b/ports/stm32/adc.c @@ -220,6 +220,14 @@ static inline uint32_t adc_get_internal_channel(uint32_t channel) { if (channel == 16) { channel = ADC_CHANNEL_TEMPSENSOR; } + #elif defined(STM32G4) + if (channel == 16) { + channel = ADC_CHANNEL_TEMPSENSOR_ADC1; + } else if (channel == 17) { + channel = ADC_CHANNEL_VBAT; + } else if (channel == 18) { + channel = ADC_CHANNEL_VREFINT; + } #elif defined(STM32L4) if (channel == 0) { channel = ADC_CHANNEL_VREFINT;