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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[求助] 关于PCI9054读写思考(更新问题)

[复制链接]
发表于 2012-11-27 20:05:16 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 kalelshey 于 2012-11-27 21:28 编辑

前段时间测试9054读写的时候没有好好仔细测试,当时只想着能够写进去一个数据就好了,没想到现在问题这么严重,不说废话,说重点:
在进行了一次读写一个32位的数据之后,需要进行更多的数据读写,由于数据量并没有很大,所以暂时考虑不用DMA,于是我采用了PlxBusIopWrite这个函数
void CP2Dlg::OnButton1()
{
U32 Value[10];
Value[0]=0x1;
Value[1]=0x6;
Value[2]=0x7;
Value[3]=0x7;
Value[4]=0x7;
Value[5]=0x7;
Value[6]=0x7;
Value[7]=0x3;
Value[8]=0x7;
Value[9]=0x7;
PlxBusIopWrite (hDevice,IopSpace0,0x8000024,false,(U32*)&Value,sizeof(Value),BitSize32);

}
可是发现时序图不对(test2是时钟,test6是ads,test5是den,见图)
于是又换了一种赋值方式(仅仅为了测试,忽略所赋的值吧),
void CP2Dlg::OnButton9()
{
U32 i;
U32 Value[10];

for (i=0;i<=9;i++)
{Value=0x1+i;
}

    PlxBusIopWrite (hDevice,IopSpace0,0x8000024,false,(U32*)&Value,sizeof(Value),BitSize32);
}


可是结果还是一样的。

于是我思考,这里面出现了两种不同的读写模式,而且是在非DMA模式下。在前两个ads下,9054只传送一个数据,而在第三个ads下,9054传送了8个数据,这属于突发读写了,可见,在我没有开启DMA模式下,它自动地进行了突发读写。(从我接触到的资料来看,一般的主板是不支持突发读写的,也就是说当我没有设置PCI9054向CPU请求权限的时候,应该每次读写都是每个lhold中1个ads+1个den,就像前两例那样的single write)。

所以我的问题是,有没有这样一种方法,可以判别,9054的local bus执行的是single write 还是burst write?

test2是时钟,test6是ads,test5是den

test2是时钟,test6是ads,test5是den
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-1-3 19:00 , Processed in 0.020019 second(s), 9 queries , Gzip On, Redis On.

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