baohuicumt
驱动牛犊
驱动牛犊
  • 注册日期2007-08-10
  • 最后登录2012-03-20
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:1481回复:1

请教:CSW阶段一直收到NAK怎么办?

楼主#
更多 发布于:2007-11-29 10:32
读写U盘,一次写一个扇区
我在发完命令,数据后,读取设备返回的状态,有时候会出现这样的情况:读取CSW的时候
总是收到NAK信号,并且重试多次之后一直是NAK,好像永远读不到CSW似的,不知道为什么。
我现在的解决办法是,如果在状态阶段连续100次都收到NAK信号,则返回错误,用控制端点发送命令让设备复位,然后将上次出错的命令数据状态再重新发送。可问题是即使我发送复位信号,
设备还是不响应随后批量传输命令,一直是NAK,请问这种情况应该如何处理?谢谢!!

ps:我检查过CBW的设置,应该没有错误,要是有错误的话应该是一次也不会成功的写入数据的啊,可是现在是前面的数个扇区都写着正常,写着写着就出错了,就读不到CSW了。我原来是用do-while循环读的,可程序老是死在这里,就是过不去,所以我才设置了100次循环。
如果100次循环仍然读不到,那么就设置设备重启,(MassStorageReset,dev_req.bmRequestType   =   0x21;dev_req.bRequest   =   0xff;),然后清除批量输入、输出端点停止位(ClearEndpointSTALL,dev_req.bmRequestType   =   0x02;dev_req.bRequest   =   0x01;),然后再重新发送出错了的CBW,结果不论你发什么东西,批量端点就是不理我(NAK),而且一直是NAK。

请问这样的话怎么处理啊?
谢谢!!!!
JJADKT
驱动牛犊
驱动牛犊
  • 注册日期2007-11-30
  • 最后登录2009-05-25
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望46点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-06-10 16:32
哎。我现在也被这个问题困扰。哎。。哪个高手指点下迷津啊。
游客

返回顶部