导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

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

    其它全志芯片讨论区
    xr806 xr872 xr829 faq 技术支持
    1
    1
    1349
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • q1215200171
      budbool LV 9 最后由 编辑

      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 条回复 最后回复 回复 引用 分享 0
      • Referenced by  q1215200171 q1215200171 
      • Referenced by  q1215200171 q1215200171 
      • 1 / 1
      • First post
        Last post

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

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