dingy 发表于 2021-11-14 21:57

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

让stm32连续转换某个通道,通过DMA存到一个AD的数组里面,连续存 先进先出模式 FIFO,需要的时候,再将所有的数组累加并除以32(移位),有人做个类似的程序吗?能分享过来参考参考吗?

dingy 发表于 2021-11-14 21:58

ADC转换的值又不是不定长的 需要FIFO来干嘛?

hanwe 发表于 2021-11-14 22:00

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

chuxh 发表于 2021-11-14 22:02

参考官方的例程,有类似的;

tian111 发表于 2021-11-14 22:04

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

llljh 发表于 2021-11-14 22:09

stm32还要处理一个LWIP协议还有外围屏幕什么的,就是有点担心CPU占用太高了。同时,对ADC采样的精度有那么一点点要求,所以用DMA+FIFO,需要读取ADC的时候能快速的读取到。

renyaq 发表于 2021-11-14 22:11

dma处理不了数据,只能完成存放的操作,也没有什么fifo,根据dma指针就知道当前数据在哪儿了

dingy 发表于 2021-11-14 22:13

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

wyjie 发表于 2021-11-14 22:15

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

jlyuan 发表于 2021-11-14 22:17

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

stly 发表于 2021-11-14 22:20

看你需要几个通道了,单个就没必要dma了

supernan 发表于 2021-11-14 22:21

配成循环模式呗,用的时候加起来平均一下就行了

wyjie 发表于 2021-11-14 22:24

用普通的倒是有

chuxh 发表于 2021-11-14 22:26

DMA比较多,但是有FIFO,这个就不清楚了!

renyaq 发表于 2021-11-14 22:28

FIFO,DMA,一般使用在串口里面还比较多!

renyaq 发表于 2021-11-14 22:33

要求不高的话 感觉没有用的必要

dingy 发表于 2021-11-14 22:36


嗯,我再好好缕一缕吧,有了好消息及时通知大家

drer 发表于 2021-12-9 12:03

使用数组是不是不太方便啊

zljiu 发表于 2021-12-9 12:04

在单片机中可以使用链表吗

coshi 发表于 2021-12-9 12:05

这样做太麻烦了吧
页: [1] 2
查看完整版本: ADC 连续转换 DMA +FIFO怎么实现