mirror of
https://github.com/micropython/micropython.git
synced 2026-01-07 04:30:24 +01:00
stm32/machine_adc: Fix machine.ADC so it works on STM32G0.
Fixes are: - Enable VREG before initializing ADC. - The channel value of internal sensor should convert with __LL_ADC_CHANNEL_TO_DECIMAL_NB(). Signed-off-by: Yuuki NAGAO <wf.yn386@gmail.com>
This commit is contained in:
committed by
Damien George
parent
7ba82219f3
commit
ddf1a383ca
@@ -244,12 +244,12 @@ void adc_config(ADC_TypeDef *adc, uint32_t bits) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(STM32G4) || defined(STM32H5) || defined(STM32H7) || defined(STM32L0) || defined(STM32L4) || defined(STM32WB) || defined(STM32WL)
|
||||
#if defined(STM32G0) || defined(STM32G4) || defined(STM32H5) || defined(STM32H7) || defined(STM32L0) || defined(STM32L4) || defined(STM32WB) || defined(STM32WL)
|
||||
if (!(adc->CR & ADC_CR_ADVREGEN)) {
|
||||
adc->CR = ADC_CR_ADVREGEN; // enable VREG
|
||||
#if defined(STM32H7)
|
||||
mp_hal_delay_us(10); // T_ADCVREG_STUP
|
||||
#elif defined(STM32G4) || defined(STM32L4) || defined(STM32WB)
|
||||
#elif defined(STM32G0) || defined(STM32G4) || defined(STM32L4) || defined(STM32WB)
|
||||
mp_hal_delay_us(20); // T_ADCVREG_STUP
|
||||
#endif
|
||||
}
|
||||
@@ -379,6 +379,12 @@ static void adc_config_channel(ADC_TypeDef *adc, uint32_t channel, uint32_t samp
|
||||
#else
|
||||
adc->SMPR = sample_time << ADC_SMPR_SMP_Pos; // select sample time
|
||||
#endif
|
||||
|
||||
#if defined(STM32G0)
|
||||
if (__LL_ADC_IS_CHANNEL_INTERNAL(channel)) {
|
||||
channel = __LL_ADC_CHANNEL_TO_DECIMAL_NB(channel);
|
||||
}
|
||||
#endif
|
||||
adc->CHSELR = 1 << channel; // select channel for conversion
|
||||
|
||||
#elif defined(STM32F4) || defined(STM32F7)
|
||||
|
||||
Reference in New Issue
Block a user