打印
[应用相关]

ADC 连续转换 DMA +FIFO怎么实现

[复制链接]
431|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dingy|  楼主 | 2019-11-16 13:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
让stm32连续转换某个通道,通过DMA存到一个AD[32]的数组里面,连续存 先进先出模式 FIFO,需要的时候,再将所有的数组累加并除以32(移位),有人做个类似的程序吗?能分享过来参考参考吗?

使用特权

评论回复
沙发
chenho| | 2019-11-16 13:33 | 只看该作者
ADC转换的值又不是不定长的 需要FIFO来干嘛?

使用特权

评论回复
板凳
songqian17| | 2019-11-16 13:36 | 只看该作者
ADC连续转换,你加了ADC中断没有?

使用特权

评论回复
地板
chenho| | 2019-11-16 13:39 | 只看该作者
参考官方的例程,有类似的;

使用特权

评论回复
5
tian111| | 2019-11-16 13:43 | 只看该作者

DMA只做数据转存这一块,速度快不占CPU时间,所以做好DMA的配置就行,到时候该怎么用这个数据那都是后话

使用特权

评论回复
6
gongche| | 2019-11-16 13:50 | 只看该作者
stm32还要处理一个LWIP协议还有外围屏幕什么的,就是有点担心CPU占用太高了。同时,对ADC采样的精度有那么一点点要求,所以用DMA+FIFO,需要读取ADC的时候能快速的读取到。

使用特权

评论回复
7
wenfen| | 2019-11-16 13:54 | 只看该作者
dma处理不了数据,只能完成存放的操作,也没有什么fifo,根据dma指针就知道当前数据在哪儿了

使用特权

评论回复
8
gongche| | 2019-11-16 13:57 | 只看该作者

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

使用特权

评论回复
9
songqian17| | 2019-11-16 14:01 | 只看该作者

可以把ADC做成软件触发加中断,单次模式。你再用个变量,计数变成多次可控的采样。做那么平滑之类的

使用特权

评论回复
10
huwr| | 2019-11-16 14:04 | 只看该作者

如果你ADC有个阈值电压,需要实时的做出反应,而软件触发的方式不是实时的,很难及时的更正,那就把ADC配置成看门狗模式

使用特权

评论回复
11
songqian17| | 2019-11-16 14:11 | 只看该作者
看你需要几个通道了,单个就没必要dma了

使用特权

评论回复
12
zhuhuis| | 2019-11-16 14:15 | 只看该作者
配成循环模式呗,用的时候加起来平均一下就行了

使用特权

评论回复
13
keaibukelian| | 2019-12-10 12:43 | 只看该作者
用普通的倒是有

使用特权

评论回复
14
goodluck09876| | 2019-12-10 12:46 | 只看该作者
DMA比较多,但是有FIFO,这个就不清楚了!

使用特权

评论回复
15
goodluck09876| | 2019-12-10 12:46 | 只看该作者
FIFO,DMA,一般使用在串口里面还比较多!

使用特权

评论回复
16
heimaojingzhang| | 2019-12-10 12:49 | 只看该作者
要求不高的话 感觉没有用的必要

使用特权

评论回复
17
guanjiaer| | 2019-12-10 12:55 | 只看该作者
帮楼主顶一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

10920

帖子

6

粉丝