阅读:1613回复:4
请教SL811读U盘问题
我发Inquiry命令的时候,收到的数据,CSW完全正确。
但发ReadCapacity的时候数据有丢失,但能收到正确的CSW。 收到其数据如下:00 01 F3 FF 00 02 00 08 而实际数据应该:00 01 F3 FF 00 00 02 00 多次读写或换一个U盘最后四个数据也是如此,也就是说在收到02之前丢了一个00。 而且用READ10读写U盘里的内容也会出现数据丢失的问题,但也能收到正确的CSW。如读到第一扇区的数据: FA 33 C0 8E D0 BC 00 7C 8B F4 50 07 50 1F FB FC BF 06 B9 00 01 F2 A5 EA 1D 06 00 00 BE 07 B3 04 ............. 而用Bus Hound获得的数据为: fa 33 c0 8e d0 bc 00 7c 8b f4 50 07 50 1f fb fc bf 00 06 b9 00 01 f2 a5 ea 1d 06 00 00 be be 07 我一已经困惑很久了,希望各位高手指点迷津。小弟感谢不尽! |
|
沙发#
发布于:2004-06-10 10:00
接收的数据长度对吗?csw里面所有信息都正常吗?
如果可能用usb分析仪抓一下你这段的通讯,看看对不对 我发Inquiry命令的时候,收到的数据,CSW完全正确。 |
|
|
板凳#
发布于:2004-06-10 11:56
接收到数据长度,CSW完全正确,剩余长度为0,STATUS也是0。
一个扇区数据分多次读取,第一次读取的64个字节有丢失,但第二次读到的前面部分数据却是对的(收到的数据从应该收到的第65个开始)。从此看来U盘发出的数据肯定没有错,应该是SL811每次接受64个字节当中出现了问题。 |
|
地板#
发布于:2004-06-10 13:06
要不把接收那部分的代码拿出来吧,看看是哪里的问题
接收到数据长度,CSW完全正确,剩余长度为0,STATUS也是0。 |
|
|
地下室#
发布于:2004-06-10 13:58
我发Inquiry命令的时候,收到的数据,CSW完全正确。 同样的事情我也试过,不过解决方法比较局限。原因是mcu的总线DMA功能有缺陷,使用IO或不用DMA即可。你看看是不是读写时序有问题。 |
|