野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18045|回复: 5

STM32F407 DMA->FSMC->AD7616 模式的难点

[复制链接]
发表于 2020-6-1 11:52:14 | 显示全部楼层 |阅读模式
最开始我是用 TIM->FSMC->AD7616这样的模式,通过定时器中断把AD采样数据放到一个缓存A[2048]中,但是由于CPU开销较大,用中断不合适,就使用 DMA->FSMC->AD7616的模式;
结合AD7616的转换周期,DMA触发一次只能存放32个数据,即A[0]---A[31],下一次触发DMA存放数据会再次从A[0]重新开始;
现在有一个问题,我需要持续的采样存数据,即希望在不使用中断的前提下,下一次触发DMA存放数据会从A[32]开始,下下一次触发从A[64]开始,依次类推
求大神解答!!!!!!!!!!
跪谢!!!!!!!!!

回复

使用道具 举报

发表于 2020-6-2 08:45:23 | 显示全部楼层
下次触发采集的时候 把A[32]的地址给DMA就行,下下一次触发的时候把A[64]的地址给DMA就行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-2 10:44:09 | 显示全部楼层
LONG_R3acc 发表于 2020-6-2 08:45
下次触发采集的时候 把A[32]的地址给DMA就行,下下一次触发的时候把A[64]的地址给DMA就行
...

最终还是要用到中断么?
回复 支持 反对

使用道具 举报

发表于 2020-6-3 09:33:04 | 显示全部楼层
完DMA传输完成中断,这样开销也不会太大
回复 支持 反对

使用道具 举报

发表于 2020-6-3 09:33:16 | 显示全部楼层
用DMA传输完成中断,这样开销也不会太大
回复 支持 反对

使用道具 举报

发表于 2020-6-5 07:48:27 | 显示全部楼层
本帖最后由 xad1974 于 2020-6-5 07:51 编辑

用2个定时器+SPI+DMA可以将系统开销减到最小,缓存满了才去处理。我就是这样做的,修正下我的是7606
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 17:20 , Processed in 0.034613 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表