clear_zcl
驱动牛犊
驱动牛犊
  • 注册日期2002-05-30
  • 最后登录2002-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1633回复:4

有谁知道如何让D12的BULK管道处理完一个命令后重新生效可以接收下一个HOST发来的数据?

楼主#
更多 发布于:2002-07-05 17:37
.........
//发送select endpoint命令,选中bulk out
* cregister = 0x04;
context = * dregister;
//批管道在空闲态时如果发现其缓冲区满,则进入CBW处理
if (context & FULLEMPTY)
{
    TPBulk_CBWHandler();
}
.........

   以上是我的查询方式的主循环中的一段代码,主要是通过select endpoint命令来判断D12的BULK OUT缓冲区有没有收到主机的数据(是否为满)来作为进入CBW命令块处理过程的条件。然后我让固件程序跑起来,用BUS BOUND捕捉IN和OUT的数据,发现第一个CBW被正确处理过后,发来第二个CBW命令块时难以满足缓冲区为满的条件,结果得不到处理。
    请问各位大虾:如何在一个命令处理成功后将缓冲区清空以便接受主机发来的下面的数据?

最新喜欢:

fly_flyfly_fl...
zhangzhuoliang
驱动牛犊
驱动牛犊
  • 注册日期2003-06-23
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望42点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-02-26 11:05
请问csw和cbw是什么dd??
两位大哥能否解释一下!!!!
我也正在做这个
liuyx
驱动牛犊
驱动牛犊
  • 注册日期2002-03-04
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-10 16:29
我不太清楚你的意思,想CSW表现为错误的话,host会自动重新发一遍CBW的,这也是这种协议保持数据正确的一种方式,缓冲区如果你把数据读了之后最好每次都清掉
clear_zcl
驱动牛犊
驱动牛犊
  • 注册日期2002-05-30
  • 最后登录2002-07-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-10 10:43
那要是收到的CSW的状态为01(FAILED),还要不要清除缓冲区呢?
liuyx
驱动牛犊
驱动牛犊
  • 注册日期2002-03-04
  • 最后登录2004-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-09 16:13
D12有一条命令可以清楚缓冲区的啊,如果你收到的CBW正确的话,你可以用这条命令的。
游客

返回顶部