本帖最后由 l_lin2003 于 2015-1-15 09:17 编辑
在msd通信时,遇到一个非常奇怪的问题:
第一步:第一包CBW中字段dCBWDataTransferLength值设置为0,bmCBWFlags字段值都默认为0(也就是方向为OUT);
第二步:这个时候设备给主机回复一个字节数据0x00,设备不再发送CSW,而是在第三步直接由主机发送CBW给设备;
第三步:发送第二包CBW,主机和设备能继续完整通信。
第四步:发送第三包CBW,设备再响应主机时出错Reset;
如下图所示:
第四步Reset的原因可能是设备响应的数据过长,应该跟第二步没关系。
奇怪的地方在这里,第二步我没有给主机回复CSW,按协议理解,主机应该在等待设备响应的CSW啊,直到超时,但主机没有等待CSW,直接发送第二包CBW了,很难理解啊,想不通~~~~~~~~~~~~~··
大家有遇到或知道原因的吗?谢谢了
|