OpenEdv-开源电子网

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

STM32的DMA能把GPIO口的数据搬到内存中去么

[复制链接]

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
发表于 2014-8-14 09:47:13 | 显示全部楼层 |阅读模式
5金钱
比赛的时候需要将送入GPIO的数据送到内存中去,想用DMA,查中文手册好像没有这方面的内容,就来问问大家,如果可以用,那是属于memory-to-memory还是外设到memory呢?,控制器是ZET6

最佳答案

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

没有明白楼主的意思哦。。。 1)gpio的数据是不能走DMA的 2)你直接读数据,不就是内存了吗? 3)比如我们的DMA实验ADC数据发送到串口。。用dma什么过程呢? 首先,正常是你读adc数据发送到串口DR寄存器。。。那么这样cpu去做这事。。。如果用dma,就直接做了。。不用cpu参与。。。 其次,你的gpio根本就不能dma通道。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-8-14 09:47:14 | 显示全部楼层
没有明白楼主的意思哦。。。
1)gpio的数据是不能走DMA的
2)你直接读数据,不就是内存了吗?
3)比如我们的DMA实验ADC数据发送到串口。。用dma什么过程呢?
首先,正常是你读adc数据发送到串口DR寄存器。。。那么这样cpu去做这事。。。如果用dma,就直接做了。。不用cpu参与。。。
其次,你的gpio根本就不能dma通道。。。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-8-12
在线时间
0 小时
发表于 2014-8-14 11:07:08 | 显示全部楼层
应该是外设吧
回复

使用道具 举报

4

主题

200

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2012-12-19
在线时间
0 小时
发表于 2014-8-14 11:23:09 | 显示全部楼层
外設到MEM
回复

使用道具 举报

54

主题

194

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
430
金钱
430
注册时间
2013-11-2
在线时间
0 小时
 楼主| 发表于 2014-8-15 14:05:36 | 显示全部楼层
回复【4楼】Admin:
---------------------------
我想让DMA将GPIOX的输入寄存器的值自动搬到一个定义的数组中去,我就直接在数组里面取
回复

使用道具 举报

27

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
387
金钱
387
注册时间
2014-8-19
在线时间
0 小时
发表于 2014-10-4 21:42:11 | 显示全部楼层
回复【5楼】周小样:
---------------------------------
解决了没?我也在找这个。我想通过GPIOX读外部传感器的数据放在一个数组内,我定时过来取走
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-10-5 10:22:37 | 显示全部楼层
回复【6楼】dongbaohui:
---------------------------------
DMA只能存储器到存储器
回复

使用道具 举报

27

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
387
金钱
387
注册时间
2014-8-19
在线时间
0 小时
发表于 2014-10-5 13:48:02 | 显示全部楼层
回复【7楼】ricefat:
---------------------------------
那存储器到串口,算啥?
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-10-7 09:06:05 | 显示全部楼层
回复【8楼】dongbaohui:
---------------------------------
我说的有错误,具体DMA能怎么用参考datasheet和reference manual吧
回复

使用道具 举报

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
发表于 2014-10-7 10:13:54 | 显示全部楼层
回复【8楼】dongbaohui:
---------------------------------
所谓的存储器,外设都只是个名字而已。DMA的实质是不用CPU将数据从一个地址搬到令一个地址,只需在DMA寄存器里面进行配置就可以了。而所谓的存储器到存储器并非规定RAM->RAM,这种模式的作用是无需外设的DMA请求,DMA数据传输自动连续进行,到你设置的数据个数后即停止。 而其它的模式则必须外设DMA请求才能DMA传输。
你说的通过GPIOX读外部传感器的数据放在一个数组内,定时过来取走。我觉得可以这样做:
失能存储器到存储器模式,GPIO寄存器作为外设,打开定时器更新DMA请求,到了定时时间,即完成一个数据的传输。
回复

使用道具 举报

27

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
387
金钱
387
注册时间
2014-8-19
在线时间
0 小时
发表于 2014-10-7 10:23:58 | 显示全部楼层
回复【10楼】STM32VBT6:
---------------------------------
说白了就是想读一个SPI输出的传感器,因为CPU还要做LCD,KEY OUT 等,但信号采集要求实时,所以数据采集尽可能不要停止。读SPI传感器时,频率只能是500HZ,还要格式,请问这个可以实现吗?如何实现?
回复

使用道具 举报

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
发表于 2014-10-7 10:49:15 | 显示全部楼层
回复【11楼】dongbaohui:
---------------------------------
 SPI输出?你用SPI的接收完成DMA请求不就可以了?具体我没验证过,我觉得可以实现,串口都可以实现发送接收的DMA的。
你查下SPI的DMA,昨晚我在论坛里看到一篇帖子,关于SPI dma的,写的很好的精华贴,你查查。
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2014-11-1
在线时间
0 小时
发表于 2014-11-6 05:14:34 | 显示全部楼层
GPIO你要配置成什么功能了,ADC这种GPIO_MODE_AIN这种也是GPIO数据,没明白你是要读取比如GPIOA上面的16位数据还是咋地?要是读取GPIOX上的16位数据用DMA干什么 大材小用了,一条语句就解决了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-29 14:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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