全志XR806 Freertos + XRMCU +ADC采样数值不准
-
1.主题
Freertos + XRMCU +ADC采样数值不准
2.问题背景
硬件:XRMCU
软件:freertos + MCU3.问题描述
3.1复现步骤
使用SDK的example/adc,编译生成固件并烧录。
指定ADC引脚连接某一电压值。
接串口调试助手,自动打印采样到的电压。3.2具体表现
测试发现adc采集出来的电压与实际电压不符合,大多数情况下会低于实际电压,就算连接超出了最大采集电压2.5V,如2.8V的电压,显示采集到的最大电压也是只有大约2.47v。4.问题分析
考虑是滤波算法的问题。
实测从原始数据读出来的数据也不会达到理论的最大数值4095,所以并不是滤波算法的原因。
改变ADC的参考源,从内部bg修改成
VDD_IO.
#if (__CONFIG_CHIP_ARCH_VER == 2) initParam.vref_mode = ADC_VREF_MODE_2; #endif
通过调整VDD_IO的电压,测量电压可以去到2.5V。
5.根本原因
XRMCU内部参考电压是1.25V,出厂时通过该电压去调整VDD_EXT达到3.3V,在调节过程中,3.3V校准后可能导致1.25V有些微的偏差,导致ADC的参考电源也回有细微的偏差。
6.解决办法
如果ADC精度要求非常高,可以使用VDD_IO作为参考电压,由用户进行校准,但这时候VDDIO不能再和VDD_EXT直接相连。
内部ADC偏差一般在30mv以内,而且是固定差值,可以使用GPADC的0x18寄存器可以去校准,方法如下:
比如1.8V输入,GPADC采样值2928,对应1787 mV,此时0x18寄存器读出来是0x811
预期值为2949,那么就把0x811-(2949-2928)=0x7FC写入0x18寄存器,这时候读出来的值就校准好了
-
-
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号