windows100 发表于 2023-12-20 10:07

HC32L110 采集ADC有可能一直没有值吗

先说现象:1.试产了1000个大约有20个,ADC采样一直通不过。复位以后程序又正常工作,采样正常。
2.对不能正常工作的产品测量对应引脚:
(1)引脚上模拟信号量在变化,0~3V。
(2)ADC连续转换中断有产生,因为我的程序在转换完成中断会关闭ADC使能,把检测口关闭。还把光敏电阻的电源关闭。通过测量光敏电阻电源,和引脚上的变化。确定ADC程序在运行,正常结束。
程序结构:
1.上电后初始化ADC功能。关闭ADC。因为是低功耗项目,所以不用的时候都关闭了外设。
2.在需要的时候,开启转换。转换完成中断后,把ADC值保存在数组中,关闭ADC。


3.程序任务判断ADC的值,做出对应动作。出错在这里,外部模拟量变化,这里没有反应。

我怀疑是我的ADC设置不对,但是又没有找到哪不对。
其中,我实际使用中因为不停的开关BGR,发现BGR的使能时间对结果影响非常大。我实际测试当BGR使能时间大于1ms,结果比较稳定。我程序中是使能了1.5ms才开启的转换。
实际电路中因为输入阻抗大,所以程序开启了电压跟随器功能。

看具体的操作:
需要转换时:
开启光敏电源
使能对应扫描通道
使能ADC时钟
使能ADC
使能BGR
延时1.5ms
清除ADC 连续转换完成中断标志
中断使能
复位ADC连续转换状态
启动ADC转换

ADC中断程序:
清除连续转换完成中断
获取对应通道ADC值保存在数组中。
禁止BGR
禁止ADC
禁止ADC时钟
禁止ADC中断
关闭光敏电源

使用时:
取ADC数据赋给局部变量
局部变量参与运算,判断数据在哪个区间段
根据区间段做出对应动作。

最后,希望有大佬能提供思路。我在考虑是不是要周期性重新初始化ADC,但是这个是治标不治本的办法,我没有找到为什么会出现这个。




windows100 发表于 2023-12-20 10:25

出了问题以后,我对这个有问题的产品,开了打印程序,打印ADC值,是变化的。芯片本身ADC功能也正常。对不能采集到ADC数据的,只要复位一次就好了。困惑中

hjl2832 发表于 2023-12-21 08:47

不明白你为流程里为什么每次都要禁止ADC,而且还禁止了它的时钟,你又开启的连续转换模式。如果硬要这样操作,那么ADC就要重新初始化更好一些,而不是只开ADC时钟和使能它。
像你这种应用,不是应该使用单次模式更好吗?

windows100 发表于 2023-12-22 08:49

hjl2832 发表于 2023-12-21 08:47
不明白你为流程里为什么每次都要禁止ADC,而且还禁止了它的时钟,你又开启的连续转换模式。如果硬要这样操 ...

每次都禁止是为了低功耗,开启连续转换是为了使用中断,并且我不止一路ADC,有时候开启一路,有时候开起2路。

豌豆爹 发表于 2024-2-27 10:05

建议确保BGR稳定后再进行ADC转换,并在程序中增加BGR的等待时间。

cr315 发表于 2024-2-27 11:40

可以考虑在复位后或在ADC异常情况下重新初始化ADC。

内政奇才 发表于 2024-2-27 13:30

检查电源管理相关的寄存器设置和状态。

海滨消消 发表于 2024-2-27 15:30

确保ADC引脚的配置正确,包括模拟输入引脚没有配置错误,以及引脚上的任何保护电路或滤波电路不会干扰ADC的采样。

麻花油条 发表于 2024-2-28 10:00

可能是硬件问题,考虑检查ADC模块、BGR模块以及相关电路是否存在故障。

嵌入式蛋挞 发表于 2024-8-1 10:39

怎么解决的

huquanz711 发表于 2024-8-24 19:37

即使没有输入,也会有个比较低的采样值。

suncat0504 发表于 2024-8-25 10:22

不可能的。只要采集,一直都会有值。

键盘手没手 发表于 2024-10-2 22:01

ADC连续转换中断有产生,因为我的程序在转换完成中断会关闭ADC使能

高级安全大使 发表于 2025-1-31 11:59

不用的时候都关闭了外设。

地瓜patch 发表于 2025-2-28 22:15

直接接上5v分压后的看数值
页: [1]
查看完整版本: HC32L110 采集ADC有可能一直没有值吗