打印

块传输的上位机代码有点问题,想请教一下!

[复制链接]
2148|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tom_2_2|  楼主 | 2011-1-28 08:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
68013a利用端点1进行块传输的速度测试,OUT端点收,IN端点返回数据。下位机代码已经用Cypress的EZ-USB Iterface软件调通了,用Bus Hound抓了一下,上位机每发一个Bulck请求,上面都显示只有DO 然后就是跟着数据,没有其它的描述符请求!
  可是当我参照cypress提供的块传输例子,自己改写了一下。Bus Hound抓到了很多请求的描述符请求,然后才是数据,并不是只有一次DO。这是发一次请求的情况,如果循环发送软件就报错了!下面是改写的程序,不知这样写有没有问题?

int PACKLEN=60;
  PUCHAR buf=new UCHAR[PACKLEN];
  ZeroMemory(buf, PACKLEN);
  LONG buflen =  PACKLEN;
  memset(buf,0x5a,PACKLEN);
  USBDevice->BulkOutEndPt->XferData(buf,buflen);
//USBDevice->BulkOutEndPt->BeginDataXfer(buf,buflen,&outOvLap);这个也试过更上面效果一样。
请前辈们帮我修正一下错误代码!
沙发
dqyubsh| | 2011-1-28 10:39 | 只看该作者
USBDevice->BulkOutEndPt->TimeOut = 200;  // 200ms timeout
一般加个延时,注意输出输入的写法,也就这样了。

你确定固件是用端点1吗?端点1一般很少有人用。端点0用来做命令解释,收发数据用2468,端点1闲置。你把固件的程序发上来看看吧。

抓包那软件意思不大,会造成系统的不稳定。

使用特权

评论回复
板凳
tom_2_2|  楼主 | 2011-1-28 10:53 | 只看该作者
谢谢啦,刚才把问题给解决了!解决办法和你差不多!
还是端点1块传输,不过偶发现一个有意思的现象和传输速度有关,刚开始的时候我设置一次传64字节,后来依次设置一次传512字节,1024,2048字节(自发自收,传过去多少字节就返回多少,然后比较一是否一致,所以一个来回就是双倍的字节)。随着一次传的字节的增加速度也会很可观的增长起码有1点几兆字节每分钟。而且CPU使用率也随着减少!
  上面现象很有意思,这样做是不是真可以提高传输速度啊?
最后我选择一次传2048字节,我这里测得的速度是17.1MByter/分钟这个速度是不是已经很快了?

使用特权

评论回复
地板
dqyubsh| | 2011-1-28 21:28 | 只看该作者
17.1MByter/分钟,相当于2.3Mbit/s,USB2.0480Mbit/s,2.3/480,占用带宽的0.5%,你说是不是很快。。

使用特权

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

本版积分规则

40

主题

319

帖子

1

粉丝