我用的是
STM32F0
芯片通过ad采样压值,
电池电压经分压电阻分压后输入PA0 -WKUP1管脚,
经检测,当输入PA0的压值为0.6v时,AD转换值全部都在750左右,经计算,该ad值属于正常。
但是问题来了:当电池电压经分压后,输入PA0的压值为1.05v时,AD转换值如下:
读取的12位ad值,几乎全是4095,中间偶有1294,1293等值, 经计算,这个1294,1293等值应该是对应1.05v的AD转换值
为什么采样值中有这么多的4095呢?
我的代码如下:
void BATT_Ini
tial(void)
{
HAL_ADCEx_Calibration_Start(&hadc); //adc较准
}
u32 GetBattValue(void)
{
static u32 bat;
if(HAL_ADC_Start(&hadc) != HAL_OK)
;
if (HAL_ADC_PollForConversion(&hadc, 10) != HAL_OK)
;
if(HAL_ADC_GetState(&hadc) & HAL_ADC_STATE_REG_EOC)
{
bat = HAL_ADC_GetValue(&hadc);
printf("bat=%ld
",(unsigned long)bat);
}
return (bat);
}
AD设置如下:
请问问题出在哪里呢?盼能得到帮助,谢谢!
一周热门 更多>