21ic问答首页 - HC32L110 采集ADC有可能一直没有值吗
HC32L110 采集ADC有可能一直没有值吗
windows1002023-12-20
先说现象: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,但是这个是治标不治本的办法,我没有找到为什么会出现这个。
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,但是这个是治标不治本的办法,我没有找到为什么会出现这个。
赞0
评论
2024-10-02
赞0
评论
2024-08-25
赞0
评论
2024-08-24
赞0
评论
2024-08-01
检测程序没问题,是对ADC值的判断不对,导致程序不运行。已经改好
赞0
评论
2024-02-28
赞0
评论
2024-02-27
赞0
评论
2024-02-27
赞0
评论
2024-02-27
赞0
评论
2024-02-27
您需要登录后才可以回复 登录 | 注册