diff --git a/targets/TARGET_STM/TARGET_STM32G4/TARGET_STM32G474xx/TARGET_NUCLEO_G474RE/PeripheralPins.c b/targets/TARGET_STM/TARGET_STM32G4/TARGET_STM32G474xx/TARGET_NUCLEO_G474RE/PeripheralPins.c index 8dfef3cc1f..f04a8f3b68 100644 --- a/targets/TARGET_STM/TARGET_STM32G4/TARGET_STM32G474xx/TARGET_NUCLEO_G474RE/PeripheralPins.c +++ b/targets/TARGET_STM/TARGET_STM32G4/TARGET_STM32G474xx/TARGET_NUCLEO_G474RE/PeripheralPins.c @@ -96,11 +96,10 @@ MBED_WEAK const PinMap PinMap_ADC[] = { {NC, NC, 0} }; -// !!! SECTION TO BE CHECKED WITH DEVICE REFERENCE MANUAL MBED_WEAK const PinMap PinMap_ADC_Internal[] = { - {ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, - {ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, - {ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, + {ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16 + {ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 + {ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17 {NC, NC, 0} }; diff --git a/targets/TARGET_STM/TARGET_STM32G4/analogin_device.c b/targets/TARGET_STM/TARGET_STM32G4/analogin_device.c index 14dd8a8f29..0c4b69ab4c 100644 --- a/targets/TARGET_STM/TARGET_STM32G4/analogin_device.c +++ b/targets/TARGET_STM/TARGET_STM32G4/analogin_device.c @@ -256,12 +256,27 @@ uint16_t adc_read(analogin_t *obj) break; case 16: sConfig.Channel = ADC_CHANNEL_16; + + if ((ADCName)obj->handle.Instance == ADC_1) { + sConfig.Channel = ADC_CHANNEL_TEMPSENSOR_ADC1; + sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5; + } break; case 17: sConfig.Channel = ADC_CHANNEL_17; + + if ((ADCName)obj->handle.Instance == ADC_1) { + sConfig.Channel = ADC_CHANNEL_VBAT; + sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5; + } break; case 18: sConfig.Channel = ADC_CHANNEL_18; + + if ((ADCName)obj->handle.Instance == ADC_1) { + sConfig.Channel = ADC_CHANNEL_VREFINT; + sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5; + } break; default: return 0; @@ -282,7 +297,9 @@ uint16_t adc_read(analogin_t *obj) } else { debug("HAL_ADC_PollForConversion issue\n"); } + LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE((&obj->handle)->Instance), LL_ADC_PATH_INTERNAL_NONE); + if (HAL_ADC_Stop(&obj->handle) != HAL_OK) { debug("HAL_ADC_Stop issue\n");; }