OpenEdv-开源电子网

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

DMA,可以用 GPIO 触发吗?

[复制链接]

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
发表于 2015-4-10 23:34:19 | 显示全部楼层 |阅读模式
5金钱

1、F4芯片,手册里 DMA request mapping 表格所列举的,能够触发 DMA 的事件全都来自CPU的内部,

如何用 GPIO 的上升沿或者下降沿来触发 DMA 呢?像中断那样。

2、手册里还有一句话:

Each stream also supports software trigger for memory-to-memory transfers (only available for the DMA2 controller)

不知道如何操作?

最佳答案

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

回复【2楼】xuande: --------------------------------- 不能直接触发,DMA里没有对应的GPIO通道,估计只能借助TIM通道来捕获GPIO的电平,然后让TIM来触发DMA。 第二问题是说,只有DMA2才有内存到内存模式,实际我在使用过程也是发现F4只有DMA2才能用TIM触发DMA把数据从内存搬到其它地方,DMA1却不能,实际上F3却又可以
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

499

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1920
金钱
1920
注册时间
2013-11-18
在线时间
268 小时
发表于 2015-4-10 23:34:20 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
不能直接触发,DMA里没有对应的GPIO通道,估计只能借助TIM通道来捕获GPIO的电平,然后让TIM来触发DMA。
第二问题是说,只有DMA2才有内存到内存模式,实际我在使用过程也是发现F4只有DMA2才能用TIM触发DMA把数据从内存搬到其它地方,DMA1却不能,实际上F3却又可以
已经放下多年的FPGA,要重新再拾起来,却是如此的陌生
回复

使用道具 举报

58

主题

499

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1920
金钱
1920
注册时间
2013-11-18
在线时间
268 小时
发表于 2015-4-10 23:34:20 | 显示全部楼层
回复【4楼】xuande:
---------------------------------
内存到内存模式是没有外部事件来触发的,只要给EN写1,DMA就开发跑
已经放下多年的FPGA,要重新再拾起来,却是如此的陌生
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
 楼主| 发表于 2015-4-11 12:28:33 | 显示全部楼层
自顶一下,欢迎赐教。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
 楼主| 发表于 2015-4-11 16:37:29 | 显示全部楼层
回复【3楼】mzwhhwj:
---------------------------------

宝贵经验,多谢!

第二个问题我想知道,怎么样操作才能“用软件”启动 DMA ?
目前即使给 EN 位写 1,其实还是要等待外设事件来启动。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
 楼主| 发表于 2015-4-11 23:53:16 | 显示全部楼层
回复【5楼】mzwhhwj:
---------------------------------
明白了,再次感谢!
回复

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-14
在线时间
3 小时
发表于 2016-6-8 09:21:31 | 显示全部楼层
xuande 发表于 2015-4-11 23:53
回复【5楼】mzwhhwj:
---------------------------------
明白了,再次感谢!

请问F407输入捕获用DMA把GPIO的数据搬到内存中,一定要用DMA2吗?1不行吗?
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
 楼主| 发表于 2016-6-8 09:41:59 | 显示全部楼层
有何不可 发表于 2016-6-8 09:21
请问F407输入捕获用DMA把GPIO的数据搬到内存中,一定要用DMA2吗?1不行吗?


你是指GPIO的IDR或者ODR寄存器吗?
这属于perepheral to memory,应当没问题。

上面说不行的,是指memory to memory。

回复

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-14
在线时间
3 小时
发表于 2016-6-8 09:52:55 | 显示全部楼层
xuande 发表于 2016-6-8 09:41
你是指GPIO的IDR或者ODR寄存器吗?
这属于perepheral to memory,应当没问题。

我用TIM3_CH3的输入捕获功能,触发DMA1_Stream7,在设置源地址如果为TIM3的寄存器比如:#define CameraReadAdr (unsigned int)&(TIM3->DIER)
就能触发DMA,能进DMA的传输完成中断,但如果#define CameraReadAdr (unsigned int)&(GPIOA->IDR)就会在DMA就会传输错误
回复

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-14
在线时间
3 小时
发表于 2016-6-8 09:56:11 | 显示全部楼层
xuande 发表于 2016-6-8 09:41
你是指GPIO的IDR或者ODR寄存器吗?
这属于perepheral to memory,应当没问题。

看到有的人说好像要用TIM1或者TIM8触发才行用GPIO DMA的方案。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
 楼主| 发表于 2016-6-8 10:07:12 | 显示全部楼层

IDR不行?应当没问题,怀疑你做错了。

不是每个定时器都能触发DMA,
手册上有表格,request map,只有表上的设备可以。


回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 09:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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