打印
[STM32L1]

stm32l151 关于ADC采样的问题不知有没有人遇到过

[复制链接]
5464|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qianhuatuijin|  楼主 | 2016-2-23 09:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在我想实现ADC采集一个电压值,初始化已经做好了,但是我为了想低功耗,就是采集一次然后间隔15秒之后再采集,这样循环间隔采集,中间不采集的这段时间把ADC+DMA这些外设关掉(直接库函数DISABLE),过程大概这样:打开采集一次+关闭+打开采集一次+关闭(循环),现在问题来了,在采集了5-6次之后,这个采集值就变成0或是1了,前面都能正常采集,但是多次循环之后值就变为0或是1了,请问有人碰到过吗?
沙发
qianhuatuijin|  楼主 | 2016-2-23 09:57 | 只看该作者
21ic 的坛友们能不能帮我指出一下问题在哪,谢谢了

使用特权

评论回复
板凳
qianhuatuijin|  楼主 | 2016-2-23 11:56 | 只看该作者
求解答

使用特权

评论回复
地板
qianhuatuijin|  楼主 | 2016-2-23 11:57 | 只看该作者
自己顶下

使用特权

评论回复
5
狼牙0354| | 2016-2-23 13:52 | 只看该作者
我觉得问题出在ADC与DMA衔接问题上,楼主可以试试先不用DMA直接读ADC数据寄存器,这样循环间隔采集应该是没有问题的
然后一步步排除错误,使用DMA传输数据可能会因为操作不及时存在数据以为问题(可通过增大ADC采样周期看看效果)

使用特权

评论回复
6
qianhuatuijin|  楼主 | 2016-2-23 13:57 | 只看该作者
你好,不用DMA直接读取这种方法刚刚试完了,发现问题好像出在ADC这里。现在是开启ADC然后去读寄存器的值没有问题,但是如果关闭ADC再开启ADC,转换后读取那个值就不对了

使用特权

评论回复
7
qianhuatuijin|  楼主 | 2016-2-23 13:58 | 只看该作者
狼牙0354 发表于 2016-2-23 13:52
我觉得问题出在ADC与DMA衔接问题上,楼主可以试试先不用DMA直接读ADC数据寄存器,这样循环间隔采集应该是没 ...

你好,不用DMA直接读取这种方法刚刚试完了,发现问题好像出在ADC这里。现在是开启ADC然后去读寄存器的值没有问题,但是如果关闭ADC再开启ADC,转换后读取那个值就不对了

使用特权

评论回复
8
大盗木木ing| | 2016-2-23 14:22 | 只看该作者
楼主有没有可能是,在这反复的过程中改变的一些寄存器的值。

使用特权

评论回复
9
qianhuatuijin|  楼主 | 2016-2-23 14:57 | 只看该作者
大盗木木ing 发表于 2016-2-23 14:22
楼主有没有可能是,在这反复的过程中改变的一些寄存器的值。

这个应该是没有,关键是我程序只要加上ADC_Cmd(ADC1,DISABLE)这句,而且关键是还没有执行到这一步(因为程序设定开启ADC后要等待60秒才去关),那个ADC转换的值就不对了

使用特权

评论回复
10
zhoupxa| | 2016-2-23 15:26 | 只看该作者
没用过这种MCU的低功耗特性,觉得有两个问题必须注意:
1.关掉ADC模块延时后重启,ADC模块的初始化设置是否会发生变化?
2.由于ADC有采样保持时间的要求,重启后应做一定延时再启动AD转换,是否加了这个延时?

使用特权

评论回复
11
sgj245609615| | 2016-2-23 16:49 | 只看该作者
不用DMA试试

使用特权

评论回复
12
lvyunhua| | 2016-2-23 17:34 | 只看该作者
期待结果!

使用特权

评论回复
13
mmuuss586| | 2016-2-23 18:47 | 只看该作者
ADC相关部分都重新初始化下看看;

使用特权

评论回复
14
lemonboard| | 2016-2-23 20:50 | 只看该作者
15秒的间隔,重新初始化并采样。我觉得与第一次采样一样即可

使用特权

评论回复
15
Thethree| | 2016-2-23 22:43 | 只看该作者
你的采样速率有多大?

使用特权

评论回复
16
ATLAS_chen| | 2016-2-24 09:16 | 只看该作者
开启之后ADC之后重新校准下ADC试下

使用特权

评论回复
17
robter| | 2016-2-24 09:25 | 只看该作者
没有用到这个

使用特权

评论回复
18
冰河w| | 2016-2-24 21:55 | 只看该作者
试试先不用DMA直接读ADC数据寄存器

使用特权

评论回复
19
dongnanxibei| | 2016-2-25 11:41 | 只看该作者
初始化一次就好了,你要记得每次唤醒后初始化一次。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

35

帖子

1

粉丝