关于DMA+ADC的问题

2019-10-15 04:03发布

用DMA+ADC模式采样时,DMA缓存区数据存满之后,取出去进行滤波存储处理,在操作缓存区数组时ADC还是在工作吗?如果还是在工作那么采样数据放到哪里了呢,会在操作数组过程中覆盖原来的值吗,最近才接触到DMA,请多指教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
hande
1楼-- · 2019-10-16 05:34
 精彩回答 2  元偷偷看……
xueshawu
2楼-- · 2019-10-16 08:50
hande 发表于 2017-2-9 10:55
嗯,对的。主要就是1和3,我理解因为ADC要连续采样,所以DMA要工作在循环模式吧

如果,按照你说的用两个数组;这样你DMA就需要把基地址重新初始化,重新映射到第二个数组地址; 或者你还是搞两个数组,第一个用于存放ADC缓存值,第二个用于存放多次采样的平均值;最后用平均值进行滤波
hande
3楼-- · 2019-10-16 12:08
xueshawu 发表于 2017-2-9 11:24
如果,按照你说的用两个数组;这样你DMA就需要把基地址重新初始化,重新映射到第二个数组地址; 或者你还 ...

你说的第二种方法意思是,在DMA中断函数中对ADC的缓存值取平均存放到另一个数组中,然后再取平均值数组进行操作吗?那在CPU在执行中断函数时,ADC是不是就不会采样了
xueshawu
4楼-- · 2019-10-16 17:37
没有清除EOC标志位,ADC是不会开启下一次转换的
xueshawu
5楼-- · 2019-10-16 22:39
你这个处理需要在DMA中断中进行;因为DMA读取ADC_DR的值,就会自动清除EOC
hande
6楼-- · 2019-10-17 03:59
 精彩回答 2  元偷偷看……

一周热门 更多>