stm32 ADC 连续转换 DMA +FIFO怎么弄?

2019-03-23 16:28发布

让stm32连续转换某个通道,通过DMA存到一个AD[32]的数组里面,连续存 先进先出模式 FIFO,需要的时候,再将所有的数组累加并除以32(移位),有人做个类似的程序吗?能分享过来参考参考吗?
8条回答
Li_Lei
1楼 · 2019-03-24 06:18.采纳回答
 精彩回答 2  元偷偷看…… 0人看过
ywlzh
2楼-- · 2019-03-23 21:16
/ 有几点先说明一下,ADC转换的值又不是不定长的 需要FIFO来干嘛?

ADC连续转换,你加了ADC中断没有?加了 如果你有其他任务,你要注意了。

DMA只做数据转存这一块,速度快不占CPU时间,所以做好DMA的配置就行,到时候该怎么用这个数据那都是后话
yl20084784
3楼-- · 2019-03-24 01:10
ywlzh 发表于 2016-7-8 09:42
有几点先说明一下,ADC转换的值又不是不定长的 需要FIFO来干嘛?

ADC连续转换,你加了ADC中断没有?加了 ...

因为stm32还要处理一个LWIP协议还有外围屏幕什么的,就是有点担心CPU占用太高了。同时,对ADC采样的精度有那么一点点要求,所以用DMA+FIFO,需要读取ADC的时候能快速的读取到。
这么做还有一点,因为stm32+DP83848发送网络数据包的时候电源波动还是比较厉害的,做个平滑滤波还是很有必要啊。
yl20084784
4楼-- · 2019-03-24 11:54
huo_hu 发表于 2016-7-8 18:53
dma处理不了数据,只能完成存放的操作,也没有什么fifo,根据dma指针就知道当前数据在哪儿了

好吧,看来此路已绝...换个其他办法了
ywlzh
5楼-- · 2019-03-24 12:56
yl20084784 发表于 2016-7-8 14:51
因为stm32还要处理一个LWIP协议还有外围屏幕什么的,就是有点担心CPU占用太高了。同时,对ADC采样的精度 ...

对于ADC你需要FIFO来干嘛?又不是像串口那样接受的不定长度的数据,那个看情况才需要FIFO。

而你ADC任务如果实时性不高。你大可以把ADC做成软件触发加中断,单次模式。你再用个变量,计数变成多次可控的采样。做那么平滑之类的..... stm32的ADC相较于其他单片机做的还是挺好的,

再考虑一个,如果你ADC有个阈值电压,需要实时的做出反应,而软件触发的方式不是实时的,很难及时的更正,那就把ADC配置成看门狗模式,对,可以变成看门狗,不是模拟看门狗,是实时的。
yl20084784
6楼-- · 2019-03-24 18:00
 精彩回答 2  元偷偷看……
yl20084784
7楼-- · 2019-03-24 20:03
huo_hu 发表于 2016-7-8 18:53
dma处理不了数据,只能完成存放的操作,也没有什么fifo,根据dma指针就知道当前数据在哪儿了

版主大大,这个问题,根据实际情况,刚刚@ywlzh 提到用ADC模拟看门狗来解决,正对我的应用条件,简直是完美

一周热门 更多>