Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    全志XR806 Freertos + XRMCU +ADC采样数值不准

    其它全志芯片讨论区
    xr806 xr872 xr829 faq 技术支持
    1
    1
    1310
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • q1215200171
      budbool LV 9 last edited by

      1.主题

      Freertos + XRMCU +ADC采样数值不准

      2.问题背景

      硬件:XRMCU
      软件:freertos + MCU

      3.问题描述

      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寄存器,这时候读出来的值就校准好了

      1 Reply Last reply Reply Quote Share 0
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策