中级会员
 
- 积分
- 202
- 金钱
- 202
- 注册时间
- 2014-12-22
- 在线时间
- 51 小时
|
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看门狗的问题, 官方给出的两个阈值,一个高,一个低, 若去判断波形的周期/频率, 就会应发低阈值的中断。 能不能就只用一个呢?
硬件已经决定了~~~~ 或者有更好的软件发方法,推荐一下也行。 就是为得到一个信号的周期/频率
|
|