OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 17803|回复: 7

关于DMA循环模式的疑问?

[复制链接]

190

主题

401

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1289
金钱
1289
注册时间
2014-6-15
在线时间
143 小时
发表于 2015-7-22 15:43:14 | 显示全部楼层 |阅读模式
5金钱
手册上看到DMA循环模式的描述

循环模式
循环模式用于处理循环缓冲区和连续的数据传输(如ADC的扫描模式)。在DMA_CCRx寄存器中
的CIRC位用于开启这一功能。当启动了循环模式,数据传输的数目变为0时,将会自动地被恢
复成配置通道时设置的初值, DMA操作将会继续进行。

问题一:
假设:
 
dma设置为循环模式,设置正常,
unsigned char ArryTest[5]缓存长度为5,

DMA多久会读取一次缓存,

比如 缓存5ms更新一次,那么DMA在这5ms内发送几次缓存数据?
如果只发送一次,那么是不是可以理解为ADC数据寄存器更新后DAM才会发送数据,那么DAM怎么知道数据更新了呢?


问题2:
ADC发送,启动DMA后,

DMA多久会读取一次adc的数据寄存器


比如假设ADC5ms采集一次,那么那么DMA在这5ms内发送几次ADC采集结果?
如果只发送一次,那么是不是可以理解为ADC数据寄存器更新后DAM才会发送数据,那么DAM怎么知道数据更新了呢?


最佳答案

查看完整内容[请看2#楼]

1,DMA的时间由外设控制,所以多久传输一次,取决于你的触发源。 2,ADC转换完成就会有EOC,EOC会启动传输,如果5ms采集一次,那么就是5ms传输一次。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-22 15:43:15 | 显示全部楼层
1,DMA的时间由外设控制,所以多久传输一次,取决于你的触发源。    2,ADC转换完成就会有EOC,EOC会启动传输,如果5ms采集一次,那么就是5ms传输一次。
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2015-6-10
在线时间
223 小时
发表于 2015-7-22 21:39:43 | 显示全部楼层
每一个adc都有对应的dma通道
他们是一对cp  有心灵感应
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-8-11
在线时间
4 小时
发表于 2017-8-26 23:52:13 | 显示全部楼层
新手上路,同问一下
回复

使用道具 举报

17

主题

354

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2017-5-21
在线时间
340 小时
发表于 2017-8-27 13:35:41 来自手机 | 显示全部楼层
第一,dma循环模式发送完成后就会重新读取要发送的数据,发送速度通过寄存器可以选择。如果你想要数据更新了再发送,可以设置成普通模式用中断的方式执行
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-8-27 17:04:29 | 显示全部楼层
本帖最后由 操作系统 于 2017-8-27 17:06 编辑

DMA是一个高效率的数据传送神器.但是并不复杂.DMA初始化完后.ADC转换完成会产生一个完成事件.这个事件会自动触发MDA来读取ADC的DR到指定内存.然后,内存位置自增加到下一个位置.开启循环DMA功能.当时只是下一个内存位置超出指定的最大位置时就回到开始位置罢了.其它的事情.它就不管了.如有开启DMA完成中断事件..会有DMA完成中断事件.
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2017-11-8
在线时间
0 小时
发表于 2017-11-8 10:00:35 | 显示全部楼层
操作系统 发表于 2017-8-27 17:04
DMA是一个高效率的数据传送神器.但是并不复杂.DMA初始化完后.ADC转换完成会产生一个完成事件.这个事件会自 ...

有个问题,使能循环模式后,还可以使能中断么,如果允许每次传输完起一次中断,是不是需要软件清除中断,那是否会影响依然在运行的dma?
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-11-8 17:45:37 | 显示全部楼层
当然不会影响了.这套机构很完美..试试.就知道了.
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 18:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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