Question
STM32H7A3 VBAT meassure
Hello,
I want to meassure the VBAT Voltage with the ADC2,
but it doesen't work.
I can meassure an intrease of the vbat current consumption from the voltage divder
when I activate the Channel Configuration. But I geht sample Values witch are way to low.
If I change the Channel to the VREF (also Rank 8) the sample values are correct.
Did I miss something?
/* ADC2 controller clock enable */
__HAL_RCC_ADC12_CLK_ENABLE();
ADC_ChannelConfTypeDef sConfig = {0};
/** Common config
*/
hadc.Instance = ADC2;
hadc.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
hadc.Init.Resolution = ADC_RESOLUTION_16B;
hadc.Init.ScanConvMode = ADC_SCAN_ENABLE;
hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
hadc.Init.LowPowerAutoWait = DISABLE;
hadc.Init.ContinuousConvMode = DISABLE;
hadc.Init.NbrOfConversion = 8;
hadc.Init.DiscontinuousConvMode = DISABLE;
hadc.Init.ExternalTrigConv = ADC_EXTERNALTRIG_T15_TRGO;
hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
hadc.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_CIRCULAR;
hadc.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
hadc.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE;
hadc.Init.OversamplingMode = DISABLE;
if (HAL_ADC_Init(&hadc) != HAL_OK)
{
Error_Handler(ADC2_ERROR_INIT_PER);
}
/** Configure Regular Channel
*/
sConfig.Channel = ADC_CHANNEL_7;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_387CYCLES_5;
sConfig.SingleDiff = ADC_SINGLE_ENDED;
sConfig.OffsetNumber = ADC_OFFSET_NONE;
sConfig.Offset = 0;
sConfig.OffsetSignedSaturation = DISABLE;
if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
Error_Handler(ADC2_ERROR_INIT_PER);
}
....
sConfig.Channel = ADC_CHANNEL_VBAT;
sConfig.Rank = ADC_REGULAR_RANK_8;
sConfig.SamplingTime = ADC_SAMPLETIME_810CYCLES_5;
if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
{
Error_Handler(ADC2_ERROR_INIT_PER);
}