OpenEdv-开源电子网

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

关于DMA传输数量的问题,也行不存在问题,可能自己异想天开了。

[复制链接]

10

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-12-22
在线时间
51 小时
发表于 2016-3-5 17:27:41 | 显示全部楼层 |阅读模式
1金钱
有可能自己步入天堂了, 好了不多说了。进入正题:
   出现原因:  用ADC去检测一段信号的上升沿(其实是需要把检测2个上升沿的。)。若将此段波形全部用DMA传输进来,然后在一个个比较,可以得出这个波形的频率(好像也是测波形的频率,只是用ADC来做了) 但是这样的,不说效率, 单单是内存就是~~~~~~你们懂的。
  现在冒出一个想法, 通过ADC的看门狗和DMA传输,来解决这个问题,   (忘了说了, ADC采用PWM来驱动的, 所以知道一个点的间隔时间,)
1、首先开启ADC和DMA功能, DMA配置为缓存模式(这个模式也有些不理解),ADC要配置成ADC看门狗模式,设置好阈值;
2、这样就不需要CPU的运转了。直接等待中断产生, 截取DMA传输的数量, 乘以ADC的单点间隔时间, 就是这个波形的频率了。
  但是有两个问题?
1、 如何配置这个DMA呢?在我的理解下, DMA就是一个复制,搬运工,(强调一下, 这个方法必须要保证内存最小才有用。所以配置DMA就有问题,如何做到内存最小呢)
2.关于ADC看门狗的问题, 官方给出的两个阈值,一个高,一个低, 若去判断波形的周期/频率, 就会应发低阈值的中断。 能不能就只用一个呢?



硬件已经决定了~~~~  或者有更好的软件发方法,推荐一下也行。 就是为得到一个信号的周期/频率

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

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-3-5 19:14:07 | 显示全部楼层
ADC有输入比较功能吧,如果是STM32内部ADC也可以用定时器触发。 DMA的缓冲深度取决于你波形的上升时间和ADC的采样频率。  另外如果你仅仅判断周期和频率,用TIM的输入捕获功能即可
回复

使用道具 举报

10

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-12-22
在线时间
51 小时
 楼主| 发表于 2016-3-7 08:47:55 | 显示全部楼层
ricefat 发表于 2016-3-5 19:14
ADC有输入比较功能吧,如果是STM32内部ADC也可以用定时器触发。 DMA的缓冲深度取决于你波形的上升时间和ADC ...

信号有些杂乱, 准备用TIM的输入捕获看看行不行。 有的时候一个干扰可能到了(一个低电平向上的三角形尖峰)0.6Vcc ;也有的时候, 下降沿下降到只有0.6Vcc的时候就上去了  ;  我先试试
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 14:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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