打印

BULK-ONLY协议中的一个问题

[复制链接]
1468|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caiming_138|  楼主 | 2009-12-29 21:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
U8 ReadCapacity(void)
{ U8 err ;
U8 bBUF[256];
BlockCommand.CbwBlock.dCBW_Signature=CBW_SIGNATURE;
BlockCommand.CbwBlock.dCBW_Tag=0x60a624de;
BlockCommand.CbwBlock.bCBW_LUN=0;
BlockCommand.CbwBlock.dCBW_DataXferLen=0x08;
BlockCommand.CbwBlock.bCBW_Flag=0x80;
BlockCommand.CbwBlock.bCBW_CDBLen=12;
BlockCommand.CbwBlock.OperationCode=UFI_CMD_READCAPACITY;
//-----------------------------------------------------------------
//包含在CBWCB中的READCAPACITY命令
//------------------------------------------------------------------
Delay( 12 );
if ( err = bulk_transfer( OUT, (U8 *)&BlockCommand.CbwBlock, 31 )  )
  return err;
Delay( 8000 );
if ( err = bulk_transfer( IN, bBUF, 0x08) )
  {
   if ( err == 4 )
  {
   if ( ClearEndpointSTALL ( Udev.bEpin ) )
    return 4;
   err = bulk_transfer( IN, (U8 *)&BlockCommand.CswBlock, 13 );
   return err;
  }
}
Delay( 4000 );
if ( err = bulk_transfer( IN, (U8 *)&BlockCommand.CswBlock, 13 )  )
  return err;
   
return 0;
}
我用宇瞻的2G,前面枚举描述符都是正确的, U盘在这个函数出了问题,每次都是err =4,
其他的U盘都不会出现这个问题,楼主帮忙分析下

相关帖子

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

本版积分规则

9

主题

29

帖子

1

粉丝