在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
EETOP诚邀模拟IC相关培训讲师 创芯人才网--重磅上线啦!
查看: 1918|回复: 0

[求助] PCI9054的DMA每次传输大小不能设置

[复制链接]
发表于 2016-12-6 11:25:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 DencCao 于 2016-12-6 11:29 编辑

DMA可以传输数据到VC中,但是每次传输的数据最多只有2048个,目标是一次传输4096个,DMA每次传输大小用 DmaData.TransferCount = sizeof(buffer) 设置,buffer是VC中接收数据的数组,当把buffer设为4096的长度时,buffer中的数据从2048后数据就不再变化。但是当把buffer设为小于2048时,数据都会随着设置一起变化,以下是buffer设置代码:
#define buf_len 4096
U32 buffer[buf_len];

这是DMA设置:
DmaData.u.UserVa = (U32)buffer;
DmaData.LocalAddr = 0x00008000;
DmaData.TransferCount = sizeof(buffer);
DmaData.LocalToPciDma = 1;
DmaData.TerminalCountIntr = 0;

下图是VC中调试的结果,从第2048个数据开始就不再变化:

buffer中数据

buffer中数据


下图是用PLXmon查看的寄存器设置:



PCI registers.jpg



以及DMA的寄存器配置,当将DMA设置(代码中DmaData.TransferCount)超过2048时,下图中Transfer Count 的值一直是980并且不在变化,当小于2048时,该值会随着设置变化而变化。


DMA registers.jpg



希望走过路过的大神前辈们能顺手指点一下,不胜感激。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 12:37 , Processed in 0.017691 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表