[技术问答] 关于HC32L130 单通道ADC采样的一个小小疑问?

[复制链接]
1191|2
 楼主| qjp1988113 发表于 2020-9-18 14:25 | 显示全部楼层 |阅读模式
本帖最后由 qjp1988113 于 2020-9-18 14:27 编辑

最近做个项目,选用的HC32L130。在调试官方的ADC DEMO,串口打印出结果观察。程序ADC配置:
  1. void AIN0_AdcInit(void)
  2. {
  3.     stc_adc_cfg_t              stcAdcCfg;

  4.     DDL_ZERO_STRUCT(stcAdcCfg);
  5.    
  6.     ///< 开启ADC/BGR 外设时钟
  7.     Sysctrl_SetPeripheralGate(SysctrlPeripheralAdcBgr, TRUE);
  8.    
  9.     Bgr_BgrEnable();        ///< 开启BGR
  10.    
  11.     ///< ADC 初始化配置
  12.     stcAdcCfg.enAdcMode         = AdcSglMode;               ///<采样模式-单次
  13.     stcAdcCfg.enAdcClkDiv       = AdcMskClkDiv1;            ///<采样分频-1
  14.     stcAdcCfg.enAdcSampCycleSel = AdcMskSampCycle12Clk;     ///<采样周期数-12
  15.     stcAdcCfg.enAdcRefVolSel    = AdcMskRefVolSelInBgr2p5;  ///<参考电压选择-内部2.5V
  16.     stcAdcCfg.enAdcOpBuf        = AdcMskBufDisable;         ///<OP BUF配置-关
  17.     stcAdcCfg.enInRef           = AdcMskInRefEnable;        ///<内部参考电压使能-开
  18.     stcAdcCfg.enAdcAlign        = AdcAlignRight;            ///<转换结果对齐方式-右
  19.     Adc_Init(&stcAdcCfg);
  20. }

  21. ///< ADC 单次扫描模式 配置
  22. void AIN0_AdcSglCfg(void)
  23. {
  24.     ///< ADC 采样通道配置
  25.     Adc_CfgSglChannel(AdcExInputCH0);
  26.    
  27.     ///< ADC 中断使能
  28.     Adc_EnableIrq();
  29.     EnableNvic(ADC_IRQn, IrqLevel3, TRUE);
  30.    
  31.     ///< 启动单次转换采样
  32.     //Adc_SGL_Start();   

  33. }
main里面一直输出结果,把AIN0引脚接GND时,偶尔会出来个3mv,好奇怪这个3.6MV是如何来的。
读出的ADC值u32AdcRestult 转换成mv: u32AdcRestult*1000*2.5/4095
即便 u32AdcRestult为1 ,那换算出的电压为 0.61mv,即最大1个单位的精度为0.61mv。
那偶尔出现的3.6mv,也就是有6个最小单位的波动?不知道是不是我硬件的电路的地不好?
真奇怪?

微信截图_20200918141053.png

amychen1234 发表于 2020-9-19 16:25 | 显示全部楼层
我司有FAE可以协助处理,可以加VX 13631694446
martinhu 发表于 2020-9-21 10:29 | 显示全部楼层
stcAdcCfg.enAdcClkDiv       = AdcMskClkDiv1;            ///<采样分频-1
这个分频改大一点试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

627

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部