找回密码
 立即注册
查看: 208|回复: 4

8H8K64U的ADC转换电压上升读入数值会下降,电压下降读入数值会上升

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-04-25 15:52:45
已绑定手机

2

主题

2

回帖

62

积分

注册会员

积分
62
发表于 2025-3-13 15:49:39 | 显示全部楼层 |阅读模式
原来用IAP15W4K十位ADC没问题,现在试验STC8H8K64U芯片,
发现电压上升到1.50V再往上升ADC转换读入数值会从1208跳到1288,
再上升电压到1.52V,ADC数值变成1236,反而变小了,有跳变。
反过来电压下降也会读入数值突然变大或变小,
就在1.5V这里最明显,而且线性度也不好。
在任何一个电压点上ADC数值波动很小,可以排除干扰因数。
换了一片单片机还是一样,P1口设为高阻输入也一样。
求大神点拨一二,谢谢!
程序是连续9次采样后取中间3次结果算术平均,这在15W上一点没问题。

  ADCTIM = 0x3F;                //AD采样时间控制
  ADCCFG = 0x2F;                //AD转换右对齐,高4为在前低8为在后,工作频率最慢为F
ADC_CONTR |= 0x80;      //打开AD转换电源

ADC_CONTR = ADC_CONTR | 0x00;       //P1.0为AD转换通道


for (j=0;j<9;j++)    //AD转换9次
    {
      ADC_CONTR |= 0x40;          //启动AD转换,    STC8H8K64U      
      _nop_();
       _nop_();
      while (!(ADC_CONTR & 0x20));   //查询ADC完成标志         STC8H8K64U
          ADC_CONTR &= ~0x20;       //ADC_FLAG清0                STC8H8K64U
          AD_Dat = ADC_RES;    //读入AD转换高4位
          AD_Dat <<= 8;        //左移8位    STC8H8K64U
          Tmp = ADC_RESL;           //读入AD转换低8位                  
          AD_Dat |= Tmp;       //高低字节拼成1个12位数          STC8H8K64U
          Mun_AD[j] = AD_Dat;  //存入9次AD转换值
    }



截图202503131538148826.jpg 截图202503131539435389.jpg


截图202503131538013607.jpg
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-13 15:53:00 | 显示全部楼层
针对您描述的STC8H8K64U芯片AD转换异常问题,建议从以下几个方面进行排查和优化:<br><br>1. **ADCTIM寄存器配置**  <br>   STC8H8K64U的ADC采样时间由ADCTIM寄存器控制,建议根据数据手册调整采样时间,确保采样周期足够长,避免因采样时间不足导致采样值不稳定。可尝试增加采样时间,观察是否有改善。<br><br>2. **参考电压稳定性**  <br>   检查ADC参考电压(VREF)是否稳定。STC8H8K64U的ADC性能对参考电压的稳定性较为敏感,建议使用外部高精度参考电压源,并确保电源滤波电容配置合理。<br><br>3. **输入阻抗匹配**  <br>   虽然P1口已设为高阻输入,但仍需检查外部电路输入阻抗是否匹配。高阻抗输入容易引入噪声,建议在输入端添加小电容(如100pF)进行滤波,减少高频干扰。<br><br>4. **非线性校正**  <br>   由于您提到线性度问题,可能是ADC本身的非线性特性导致。建议对ADC进行校准,采集多点数据并拟合曲线,通过软件进行非线性补偿。<br><br>5. **程序优化**  <br>   您的采样算法(9次采样取中间3次平均)在IAP15W4K上运行良好,但STC8H8K64U的ADC特性可能不同。建议增加采样次数(如16次)并采用更复杂的滤波算法(如中值滤波+滑动平均)以提高稳定性。<br><br>6. **硬件排查**  <br>   若问题依然存在,建议检查PCB布局,确保模拟信号走线与数字信号走线隔离,减少串扰。同时,确认电源和地线设计是否合理。<br><br>通过以上步骤,应能有效改善AD转换的稳定性和线性度。若问题仍未解决,建议联系STC官方技术支持,获取进一步帮助。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2025-3-13 21:13:11 | 显示全部楼层
截图202503132112472855.jpg


截图202503132113086776.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2025-3-14 00:13:05 | 显示全部楼层
STC8H8K64U的12位ADC比STC15的10位ADC性能好得多,精度就是12位。
请测试我的例程,并将结果贴出来。
07-8H8K64U-15路12位ADC转换-串口1(P3.1)返回结果-C语言

请别修改程序, 直接下载"07-8H8K64U-15路ADC转换-串口1(P3.1)返回结果-C语言"里的"ADC.hex"测试。
下载时选择主频11.0592MHZ. 测试时, 电脑的串口助手设置115200,8,n,1.

本程序演示15路ADC和bandgap查询采样,转换结果转为十进制文本通过串口1(P3.1)发送给上位机,波特率115200,8,n,1,文本方式。


只关心你的那一路ADC值即可,其余的ADC值不用理会。
业余推荐的测试方法:用电位测试,用高精度电压表对比,见下图:
截图202503140012346745.jpg

STC8H系列-ADC相关程序.rar (1.18 MB, 下载次数: 14)


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-04-25 15:52:45
已绑定手机

2

主题

2

回帖

62

积分

注册会员

积分
62
发表于 2025-3-14 12:47:23 | 显示全部楼层
国芯人*** 发表于 2025-3-13 15:53
针对您描述的STC8H8K64U芯片AD转换异常问题,建议从以下几个方面进行排查和优化:1. **ADCTIM寄存器配置**  ...

好了,谢谢!昨天高阻设错了,搞了半天,AD转换口一定要设为高阻
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 00:47 , Processed in 0.138597 second(s), 73 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表