打印

上位机代码有点问题

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

使用特权

评论回复
板凳
wangpe| | 2011-10-19 23:17 | 只看该作者
然后呢

使用特权

评论回复
地板
lium|  楼主 | 2011-10-19 23:34 | 只看该作者
这是发一次请求的情况,如果循环发送软件就报错了!

使用特权

评论回复
5
hanwe| | 2011-10-20 08:22 | 只看该作者
看看你的程序吧

使用特权

评论回复
6
lium|  楼主 | 2011-10-20 08:26 | 只看该作者
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);这个也试过更上面效果一样。

使用特权

评论回复
7
langgq| | 2011-10-20 08:37 | 只看该作者
USBDevice->BulkOutEndPt->TimeOut = 200;  // 200ms timeout
一般加个延时,注意输出输入的写法,也就这样了。

使用特权

评论回复
8
wangzsa| | 2011-10-20 08:39 | 只看该作者
你确定固件是用端点1吗?

使用特权

评论回复
9
hanwe| | 2011-10-20 08:42 | 只看该作者
嗯,端点1一般很少有人用。端点0用来做命令解释,收发数据用2468,端点1闲置。

使用特权

评论回复
10
zhanglli| | 2011-10-20 08:44 | 只看该作者
抓包那软件意思不大,会造成系统的不稳定。

使用特权

评论回复
11
lium|  楼主 | 2011-10-20 08:51 | 只看该作者
还是端点1块传输,不过偶发现一个有意思的现象和传输速度有关,刚开始的时候我设置一次传64字节,后来依次设置一次传512字节,1024,2048字节(自发自收,传过去多少字节就返回多少,然后比较一是否一致,所以一个来回就是双倍的字节)。

使用特权

评论回复
12
lium|  楼主 | 2011-10-20 08:51 | 只看该作者
随着一次传的字节的增加速度也会很可观的增长起码有1点几兆字节每分钟。而且CPU使用率也随着减少!

使用特权

评论回复
13
guoyt| | 2011-10-20 08:54 | 只看该作者
上面现象很有意思,这样做是不是真可以提高传输速度啊?

使用特权

评论回复
14
lium|  楼主 | 2011-10-20 08:56 | 只看该作者
我选择一次传2048字节,我这里测得的速度是17.1MByter/分钟这个速度是不是已经很快了?

使用特权

评论回复
15
llia| | 2011-10-20 08:58 | 只看该作者
17.1MByter/分钟,相当于2.3Mbit/s,USB2.0480Mbit/s,2.3/480,占用带宽的0.5%,你说是不是很快。。

使用特权

评论回复
16
lium|  楼主 | 2011-10-20 09:00 | 只看该作者
呵呵,是啊

使用特权

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

本版积分规则

915

主题

9578

帖子

3

粉丝