阅读:1481回复:1
请教:CSW阶段一直收到NAK怎么办?
读写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。 请问这样的话怎么处理啊? 谢谢!!!! |
|
沙发#
发布于:2008-06-10 16:32
哎。我现在也被这个问题困扰。哎。。哪个高手指点下迷津啊。
|
|