cancel
Showing results for 
Search instead for 
Did you mean: 

Calculating Analog reference voltage using vref macro

Aanchal
Associate II

I am using stm32wl55 controller to Calculate Analog reference voltage using vref macro, which is defined as follows:

#define __HAL_ADC_CALC_VREFANALOG_VOLTAGE(__VREFINT_ADC_DATA__,\
                                          __ADC_RESOLUTION__) \
__LL_ADC_CALC_VREFANALOG_VOLTAGE((__VREFINT_ADC_DATA__),\
                                 (__ADC_RESOLUTION__))
 
1) Calling a function to get the analog voltage value using:
 
GetBatteryVoltage()
{
    static VVG_HAL::AdcValue    value(GetAdc(), ADC_CHANNEL_VREFINT, AdcVrefintToVoltage);
    return value;
}
/**
 *  Scale an Vrefint ADC input to voltage
 */
float   AdcVrefintToVoltage(float adcVal)
{
    // __HAL_ADC_CALC_VREFANALOG_VOLTAGE returns millivolts
    return float(__HAL_ADC_CALC_VREFANALOG_VOLTAGE(uint32_t(adcVal), ADC_RESOLUTION_12B)) / 1000.0f;
}
 
Problem statement:
I am Getting the adc reading only on the second instance of  calling GetBatteryVoltage().GetValue(), with the analog value not getting converted to float by vref macro.
Please provide some solution to the issue I am facing.

 

 

0 REPLIES 0