stm32F0芯片通过ad采样压值ad值不正常

2019-07-14 16:49发布

我用的是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_Initial(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设置如下:


请问问题出在哪里呢?盼能得到帮助,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
Oo一笑
1楼-- · 2019-07-14 23:45
 精彩回答 2  元偷偷看……
wangyuzi87
2楼-- · 2019-07-15 02:55
Oo一笑 发表于 2018-10-17 19:15
本帖最后由 Paderboy 于 2015-11-28 13:28 编辑

static u32 bat?

这不是问题的根源阿,谢谢!
zhouxk
3楼-- · 2019-07-15 08:47
时钟分频改大一点,采样周期改长一些试试看
zhouxk
4楼-- · 2019-07-15 14:41
还有确定你硬件电路没有问题的。

一周热门 更多>