打印

GD32qq群知识整理-6-关于GD32的DMA循环模式的问题

[复制链接]
2198|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunmeat|  楼主 | 2014-10-29 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DMA, TI, TE, AN, AI
关于DMA的循环模式(Circulation mode),manual 中只提到 “If enabled,
the remain counter of the channel is automatically reloaded with
the initial programmed value when it reaches zero. So the DMA
requests are always served. ”。
请问,从 peripheral 传数据到 memory,使能 Circulation mode,
那么当 remain counter of the channel 到达0时,remain counter 会重新load入之前写入的值,

请问,此时/后,从peripheral接收到的数据存入的地址是从 Memory base address开始的吗?
沙发
sunmeat|  楼主 | 2014-10-29 17:04 | 只看该作者
比如你读的数据有 32个元素长度,你就用双倍大小的缓存,比如 buf[64]

Memory base address 是从 buf[0] 开始的, 到达 buf[63]后 会自动 从 buf[0] 重新开始。


当触发  半完成中断, 你就读  buf[0]到buf[31]

当触发  完成中断, 你就读 buf[32]到buf[63]

使用特权

评论回复
板凳
sunmeat|  楼主 | 2014-10-29 17:05 | 只看该作者
比方说你一次需要采集 32个 AD值,

那么 DMA循环模式 你设置size为 64个。

每完成一半就会发生一次中断, 处理每32个数

使用特权

评论回复
地板
EDAStarer| | 2020-7-7 10:42 | 只看该作者
我想从ADC采集数据,放到DMA的buffer1,到一定长度后,触发DMA中断去发送;在DMA发送过程中,ADC采集的数据不停止,放的DMA的buffer2,到一定长度后,触发DMA中断去发送。
怎样设置才能实现这个功能?

使用特权

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

本版积分规则

208

主题

2132

帖子

13

粉丝