你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何让STM32F4的DMA传输目的地址递增问题

[复制链接]
quzhanguang-337 提问时间:2013-12-12 16:52 /
 在用F407Discovery做外部高速ADC实验,把外部AD的转换结果,通过DMA传输到内存中,使用外部时钟来触发DMA。
把200次的转换结果储存到一个数组中。传输长度设置为为200,储存器地址递增。


问题是每触发一次DMA,DMA都会把同一个转换结果,传输到数组中,数组的里面都是同一个结果。也就是说DMA是触发一次,就完成了200次传输,结果如下图。
  QQ截图20131212135330.jpg


如果希望,触发一次DMA,传输一次结果。结果是内存地址不能递增,每次结果都储存在了数组中的第一个元素。
结果如下图
 
QQ截图20131212140009.jpg

请教大神们,怎么设置DMA才能触发一次传输一次转换结果,每次传输的目的地址递增,把200个不同时刻AD的转换结果储存到数组中





呢?
收藏 评论11 发布时间:2013-12-12 16:52

举报

11个回答
quzhanguang-337 回答时间:2013-12-12 17:14:16

RE:如何让STM32F4的DMA传输目的地址递增问题

顶起啊,别沉了
fengye5340 回答时间:2013-12-13 09:37:46

RE:如何让STM32F4的DMA传输目的地址递增问题

1--开启内存递增模式。
   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable
2--关闭DMA循环模式,采用正常模式
   DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
   你的要求中,用循环模式会出现上面的结果。
3--200次时钟触发采用一个计数器控制
这个前提是,你的 DMA_InitStructure.DMA_BufferSize =1.
目标内存:DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&b,
中,b是个数组指针
有缘于你 回答时间:2013-12-13 11:48:24

RE:如何让STM32F4的DMA传输目的地址递增问题

用DMA_Mode_Normal模式
quzhanguang-337 回答时间:2013-12-13 13:18:43

回复:如何让STM32F4的DMA传输目的地址递增问题

 楼上两位的方法试过,确认不可行
fengye5340 回答时间:2013-12-13 14:25:17

回复:如何让STM32F4的DMA传输目的地址递增问题

回复第 5 楼 于2013-12-13 13:18:43发表:
 楼上两位的方法试过,确认不可行
 

在每次DMA中断中,都需要重新配置DMA的,楼主把代码贴上来看看
jerryh 回答时间:2014-1-6 15:53:02

RE:如何让STM32F4的DMA传输目的地址递增问题

你的问题解决得怎样了?我最近也在弄,到时直接读取DMA的值,总是为0,能发我个你的程序参考下吗?1061827991@qq.com
徐_公 回答时间:2014-1-6 19:44:23

RE:如何让STM32F4的DMA传输目的地址递增问题

我最近做了一个ETH 转 USART,用的DMA,感觉其递增功能真的挺好用,但
你这个要是用memory地址递增只能是把peripheral的数据传buffersize次。
    我觉得楼主fengye5340-109024说的是可行的,你看看这样行不行:
1、在外部触发处理中设置一个静态的计数器(static uint_16 COUNTER),每次触发都自加一。
2、采用非递增模式,peripheral地址固定,而memory的地址为基址+COUNTER,buffersize设为1.
3、这样每次触发都初始一下DMA设置,不知这样是否会满足你的高速要求,但感觉影响不是很大(我的USART接受数据转存到缓存就是这么处理的,因为USART的数据寄存器就一个字节长,只能一个个转)
4、if(COUNTER>200){...},你可以根据你的需要写。
quzhanguang-337 回答时间:2015-4-10 21:36:45
徐_公 发表于 2014-1-6 19:44
我最近做了一个ETH 转 USART,用的DMA,感觉其递增功能真的挺好用,但
你这个要是用memory地址递增只能是把pe ...

这跟直接在外部中断了读写数据有什么区别
eurphan 回答时间:2015-4-11 18:36:09
不懂帮顶  
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版