STM32用PWM触发ADC采样,采样一定样本后停止,如何设置?

2020-01-03 19:07发布

   想实现的功能如下:
         1。用定时器产生一路PWM驱动外围电路,并用这路PWM的上升边沿做为ADC开始采集的起始点。
         2.  ADC采集用DMA传输,PWM边沿触发ADC开始第一个样本的采集,采集完成256个样本后通知主函数进行运算处理。此时不再采集传输以防数据被覆盖。
         3.  主函数处理完后,再次允许PWM边沿触发ADC继续采集下一轮256的样本。并且保证第一个样本是PWM边沿触发,就是需要保证同步。
         4.  PWM一经开启,就不允许再次暂停。
   触发ADC采样完256个样本后产生DMA中断,在中断里置位标志。如何暂停ADC和DMA继续动作,处理玩后又如何保证下一个采集的同步呢?
  现在的处理是在DMA中断中  用ADC_Cmd(ADC1, DISABLE);  来关闭中断,主函数处理完后再开启,但是感觉这个做法不好。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
皮尔斯
1楼-- · 2020-01-03 21:02
采集完样本不是关闭定时器就只有关ADC了,这么做为什么不好
lcw_swust
2楼-- · 2020-01-03 22:52
 精彩回答 2  元偷偷看……
GZZXB
3楼-- · 2020-01-04 01:06
lcw_swust 发表于 2019-6-25 15:32
可以换个思路嘛,比如采257个,只用最后256个,第一个丢掉。

没理解你的意思
Earthman
4楼-- · 2020-01-04 05:28
不用关中断,关闭ADC的DMA传输使能位就足够 了,ADC会一直跑的,你再次使能DMA传输又传就是了
lcw_swust
5楼-- · 2020-01-04 06:46
GZZXB 发表于 2019-6-25 15:38
没理解你的意思

我的意思是采集够了后关ADC或关DMA都行,如果担心同步的问题就把数据多采一些,前面多余的数据认为不稳定就丢掉。
xiaomu
6楼-- · 2020-01-04 07:06
设置双buff,一个接收,一个处理,这样数据可以连续采集

一周热门 更多>