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条回答
ilawp
1楼-- · 2020-01-05 06:13
liaoliaoliao123 发表于 2019-8-21 11:55
楼主 有没有搞过外部事件触发ADC采集

貌似没有直接gpio触发的渠道。
可以将信号作为某个定时器的外部时钟输入ETR,定时器设定为slave模式,用trgo事件触发dma。
liaoliaoliao123
2楼-- · 2020-01-05 09:40
ilawp 发表于 2019-8-25 16:56
貌似没有直接gpio触发的渠道。
可以将信号作为某个定时器的外部时钟输入ETR,定时器设定为slave模式,用t ...

谢谢你的回复
liaoliaoliao123
3楼-- · 2020-01-05 11:29
GZZXB 发表于 2019-8-24 21:19
这个没有用过,但是应该是一样的道理只是触发源配置为外部信号触发而已。 ...

好 谢谢

一周热门 更多>