Skip to content

Commit 885aca7

Browse files
committed
REVIEW
1 parent 356effa commit 885aca7

File tree

2 files changed

+30
-19
lines changed

2 files changed

+30
-19
lines changed

targets/TARGET_STM/TARGET_STM32G4/TARGET_STM32G474xx/TARGET_NUCLEO_G474RE/PeripheralPins.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,10 @@ MBED_WEAK const PinMap PinMap_ADC[] = {
9696
{NC, NC, 0}
9797
};
9898

99-
// !!! SECTION TO BE CHECKED WITH DEVICE REFERENCE MANUAL
10099
MBED_WEAK const PinMap PinMap_ADC_Internal[] = {
101-
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)},
102-
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)},
103-
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)},
100+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
101+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18
102+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
104103
{NC, NC, 0}
105104
};
106105

targets/TARGET_STM/TARGET_STM32G4/analogin_device.c

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -94,38 +94,33 @@ static void _analogin_init_direct(analogin_t *obj, const PinMap *pinmap)
9494

9595
#if defined(ADC1)
9696
if ((ADCName)obj->handle.Instance == ADC_1) {
97-
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC12); // TODO - disable clock with deinit?
98-
__HAL_RCC_ADC12_CONFIG(RCC_ADC12CLKSOURCE_SYSCLK); // TODO - which clock?
99-
// SYSCLK or PLL?
97+
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC12);
98+
__HAL_RCC_ADC12_CONFIG(RCC_ADC12CLKSOURCE_SYSCLK);
10099
}
101100
#endif
102101
#if defined(ADC2)
103102
if ((ADCName)obj->handle.Instance == ADC_2) {
104-
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC12); // TODO - disable clock with deinit?
105-
__HAL_RCC_ADC12_CONFIG(RCC_ADC12CLKSOURCE_SYSCLK); // TODO - which clock?
106-
// SYSCLK or PLL?
103+
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC12);
104+
__HAL_RCC_ADC12_CONFIG(RCC_ADC12CLKSOURCE_SYSCLK);
107105
}
108106
#endif
109107
#if defined(ADC3)
110108
if ((ADCName)obj->handle.Instance == ADC_3) {
111-
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC345); // TODO - disable clock with deinit?
112-
__HAL_RCC_ADC345_CONFIG(RCC_ADC345CLKSOURCE_SYSCLK); // TODO - which clock?
113-
// SYSCLK or PLL?
109+
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC345);
110+
__HAL_RCC_ADC345_CONFIG(RCC_ADC345CLKSOURCE_SYSCLK);
114111
}
115112
#endif
116113
#if defined(ADC4)
117114
if ((ADCName)obj->handle.Instance == ADC_4) {
118-
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC345); // TODO - disable clock with deinit?
119-
__HAL_RCC_ADC345_CONFIG(RCC_ADC345CLKSOURCE_SYSCLK); // TODO - which clock?
120-
// SYSCLK or PLL?
115+
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC345);
116+
__HAL_RCC_ADC345_CONFIG(RCC_ADC345CLKSOURCE_SYSCLK);
121117
}
122118
#endif
123119

124120
#if defined(ADC5)
125121
if ((ADCName)obj->handle.Instance == ADC_5) {
126-
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC345); // TODO - disable clock with deinit?
127-
__HAL_RCC_ADC345_CONFIG(RCC_ADC345CLKSOURCE_SYSCLK); // TODO - which clock?
128-
// SYSCLK or PLL?
122+
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC345);
123+
__HAL_RCC_ADC345_CONFIG(RCC_ADC345CLKSOURCE_SYSCLK);
129124
}
130125

131126
#endif
@@ -220,12 +215,27 @@ uint16_t adc_read(analogin_t *obj)
220215
break;
221216
case 16:
222217
sConfig.Channel = ADC_CHANNEL_16;
218+
219+
if ((ADCName)obj->handle.Instance == ADC_1) {
220+
sConfig.Channel = ADC_CHANNEL_TEMPSENSOR_ADC1;
221+
sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
222+
}
223223
break;
224224
case 17:
225225
sConfig.Channel = ADC_CHANNEL_17;
226+
227+
if ((ADCName)obj->handle.Instance == ADC_1) {
228+
sConfig.Channel = ADC_CHANNEL_VBAT;
229+
sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
230+
}
226231
break;
227232
case 18:
228233
sConfig.Channel = ADC_CHANNEL_18;
234+
235+
if ((ADCName)obj->handle.Instance == ADC_1) {
236+
sConfig.Channel = ADC_CHANNEL_VREFINT;
237+
sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
238+
}
229239
break;
230240
default:
231241
return 0;
@@ -246,7 +256,9 @@ uint16_t adc_read(analogin_t *obj)
246256
} else {
247257
debug("HAL_ADC_PollForConversion issue\n");
248258
}
259+
249260
LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE((&obj->handle)->Instance), LL_ADC_PATH_INTERNAL_NONE);
261+
250262
if (HAL_ADC_Stop(&obj->handle) != HAL_OK) {
251263
debug("HAL_ADC_Stop issue\n");;
252264
}

0 commit comments

Comments
 (0)