OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6663|回复: 6

如何使用ADC+DMA每隔一小段时间连续采集两个通道的数据

[复制链接]

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
发表于 2015-6-14 22:59:23 | 显示全部楼层 |阅读模式
5金钱

        我之前采用ADC_DMA采集通道数据的时候,使用的ADCx->CR2我配置的是连续转换模式,这样通过DMA把ADC通道采样到的数值存到固定的数组中去,这样是可以得到正确的电压的。但是这样就出现了一个问题,就是ADC的采样频率过高,我不需要那么高的采样频率,我每秒钟只需要400个数据。
        之后我把ADCx->CR2配置为单次转换,隔一段时间软件触发一次,其他配置没有改变,这时候读出来的是乱码,这是什么原因呢。
        或者有什么其他方法可以每秒钟就采集400个数据的呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

499

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1920
金钱
1920
注册时间
2013-11-18
在线时间
268 小时
发表于 2015-6-15 09:07:10 | 显示全部楼层
已经放下多年的FPGA,要重新再拾起来,却是如此的陌生
回复

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2014-6-6
在线时间
14 小时
发表于 2015-6-15 09:07:30 | 显示全部楼层
你是用DMA做4000个数据的缓存还是?

你可以连续采,用数组记录 记到4000个就不记了,第二秒再刷新这4000个数组的数据就完了。

ADC是有时间采样要求的,你得看芯片资料。
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2015-6-15 13:01:57 | 显示全部楼层
回复【3楼】keykay:
---------------------------------
之前发的有点错误,是400个数据,1秒钟采集400个数据,即每1/400秒采集一个数据,你那个方法应该不可行吧
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2015-6-15 13:03:40 | 显示全部楼层
回复【2楼】mzwhhwj:
---------------------------------
请问一下这个怎么做,我就是用这样做的,每一次进入定时器软件触发一次,但是结果是错误的,就像我原来说的一样
回复

使用道具 举报

23

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2014-9-24
在线时间
39 小时
 楼主| 发表于 2015-6-15 13:15:59 | 显示全部楼层
[mw_shl_code=c,true] //下面是ADC部分关键程序 GPIOA->CRL&=0XFFFFFF00;//PA0 1 anolog输入//设置PA0口为模拟上拉输入,PA1口模拟上拉输入 ADC1->CR1|=1<<8;//开启扫描模式 ADC1->CR2|=1<<20;//允许软件外部触发 ADC1->CR2&=~(7<<17); ADC1->CR2|=7<<17;//选择为软件触发 ADC1->CR2&=~(1<<1);//设置为非连续模式 如果这里设置为连续模式,然后一次性触发ADC——DMA是可以的,但是设置为非连续模式的话,在定时器里面不断进行软件开启就不行了,不知道为什么,这是候读出来的数值都是错误的 [/mw_shl_code]
回复

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2014-6-6
在线时间
14 小时
发表于 2015-6-15 16:47:10 | 显示全部楼层
回复【4楼】DZKJXHxcz:
---------------------------------
400个数据用DMA存应该没问题 , 时时更新400个DMA的数据,到了400个就从0开始覆盖。

要是用定时器的话,你得看一下采样时间和稳定时间,要不稳定时间不足的话数据就不稳定。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 07:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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