打印

28377S DMA读取固定地址的值到DACVALS中

[复制链接]
3152|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
adming|  楼主 | 2016-10-16 13:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想在一个固定的地址放一个数组:const unsigned int wave[]={5,6,7,8,8,7,6,5,9,8,7,6,5,4,3,2,2,3,4,5,6,7,8,9};
将这个数组的地址直接给DMAsoure源地址,目的地址DMADest=&DacaRegs.DACVALS.all
burst 7次,transfer 1次。结果DacaRegs.DACVALS.all地址上始终无数据。
DMA代码如下:
DMASource = (volatile Uint16 *)0xFE000;
DMACH6AddrConfig(&DacaRegs.DACVALS.all,DMASource);
DMACH6BurstConfig(7,1,1);
DMACH6TransferConfig(1,1,1);
DMACH6ModeConfig(0,PERINT_ENABLE,ONESHOT_DISABLE,CONT_DISABLE,
                     SYNC_DISABLE,SYNC_SRC,OVRFLOW_DISABLE,SIXTEEN_BIT,
                     CHINT_END,CHINT_ENABLE);
StartDMACH6();
请那位给指导下。

相关帖子

沙发
adming|  楼主 | 2016-10-17 14:34 | 只看该作者
自己顶一下

使用特权

评论回复
板凳
jimmhu| | 2016-10-17 22:42 | 只看该作者
你的地址的配置对了吗?

使用特权

评论回复
地板
jimmhu| | 2016-10-17 22:45 | 只看该作者
DMA不怎么常用,都忘了。

使用特权

评论回复
5
adming|  楼主 | 2016-10-18 09:02 | 只看该作者
我运行后查看了地址的分配,都对着了。我用的时软件触发中断,感觉是MODECOFIG的配置和中断这块有问题,目前还在学习中。
谢谢关注和和回答。

使用特权

评论回复
6
adming|  楼主 | 2016-10-18 09:47 | 只看该作者
问题发现了,我从RAM中读数就可以,从FLASH中读数就不行。DMA不能直接访问FLASH吗

使用特权

评论回复
7
adming|  楼主 | 2016-10-18 11:21 | 只看该作者
我将DMA源地址中的值往另一个RAM中的数组中写,可以写进去,但怎么写不到DA的&DacaRegs.DACVALS.all中?

使用特权

评论回复
8
angerbird| | 2016-10-18 22:16 | 只看该作者
这个还没操作过的,不便评论的。

使用特权

评论回复
9
smilingangel| | 2016-10-19 20:44 | 只看该作者
地址是需要注意的。。

使用特权

评论回复
10
adming|  楼主 | 2016-10-20 09:12 | 只看该作者
smilingangel 发表于 2016-10-19 20:44
地址是需要注意的。。

能详细说说吗?我用同样的方法,给SPIbuf,串口的BUF都可以写进去。
而且在单步仿真时我可以看到DACVALS的地址已经赋给DMA的目标地址了。

使用特权

评论回复
11
Snow7| | 2016-10-26 21:01 | 只看该作者
怎么知道没写到DA的&DacaRegs.DACVALS.all中

使用特权

评论回复
12
kkzz| | 2016-10-26 22:01 | 只看该作者
你的代码呢看一下

使用特权

评论回复
13
chuntian2016| | 2016-10-26 22:04 | 只看该作者
DMA要根据具体的外设模块的应用配套使用的

使用特权

评论回复
14
chuntian2016| | 2016-10-26 22:05 | 只看该作者
主要用来完成外设数据的快速传输的。

使用特权

评论回复
15
kkzz| | 2016-10-26 22:08 | 只看该作者
dma修改代码试试看。

使用特权

评论回复
16
adming|  楼主 | 2016-11-1 14:37 | 只看该作者
Snow7 发表于 2016-10-26 21:01
怎么知道没写到DA的&DacaRegs.DACVALS.all中

我在线仿真产看相应寄存器对值

使用特权

评论回复
17
adming|  楼主 | 2016-11-1 14:38 | 只看该作者
kkzz 发表于 2016-10-26 22:01
你的代码呢看一下

DMASource = (volatile Uint16 *)0xFE000;
DMACH6AddrConfig(&DacaRegs.DACVALS.all,DMASource);
DMACH6BurstConfig(0,1,1);
DMACH6TransferConfig(1,1,1);
DMACH6ModeConfig(0,PERINT_ENABLE,ONESHOT_DISABLE,CONT_DISABLE,
                     SYNC_DISABLE,SYNC_SRC,OVRFLOW_DISABLE,SIXTEEN_BIT,
                     CHINT_END,CHINT_ENABLE);
StartDMACH6();

使用特权

评论回复
18
pmp| | 2016-11-5 17:01 | 只看该作者
DMASource的地址配置的对吗?

使用特权

评论回复
19
pmp| | 2016-11-5 17:03 | 只看该作者
通过手册查看DMASource的地址代码,然后才能读取。

使用特权

评论回复
20
jimmhu| | 2016-11-7 22:31 | 只看该作者
DMA配置对了吗?

使用特权

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

本版积分规则

8

主题

86

帖子

0

粉丝