F407 ADC采集数据偏大的原因

2019-07-20 11:23发布

本帖最后由 orta 于 2017-5-8 21:44 编辑

原子大大好,我的板子是用 8.4V锂电池进行供电,想用 PA1 或 PA0 进行电池电量的检测。

首先,VREF 我是用 REF3133芯片进行 3.3V提供参考,
其次,8.4V的电池 我用  400K + 300K 进行分压, 分压后 连入 PA0 或 PA1。

然后,ADC的代码如下

u16 adcx
float adc_vooltage

                                        adcx = Get_Adc(ADC_Channel_1);                        
                                        adc_voltage = (float)(adcx)*(3.3/4096);
                                        sprintf ((char *)buf, "电压为:0.3f",adc_voltage);                                                               
                                        Show_Str(670,432,200,16,buf,16,0);

发现,adcx的采样值偏大,用万用表测量当前分压值应该是 2.6V,可是实际采样计算完后是3.0V。
我也用万用表测量了VREF ,3.3V很准确。

最后我把 PA0 PA1 连入GND,发现测量出来也很正常,0.0001V。应该不是ADC配置的问题吧?

请问是怎么回事呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。