阅读:5231回复:29
SL811HS控制的U盘读写
U盘的枚举过程已经通过,DESCRIPTION中EP1为输入,EP2为输出,现对EP2循环发INQUIRY或READ10命令,第一次有ACK,以后只有端口挂起返回,或紧接着对EP1发读指令,只有NACK返回。
请教各位大虾,怎么玩。 |
|
沙发#
发布于:2004-03-17 17:21
到]
|
|
|
板凳#
发布于:2003-12-24 16:00
晶阵用的对吗?
我们有成熟MCU读写U盘的方案. 详细信息可以到我们的网站上看:http://eden.51.net 上面有介绍和图片。 |
|
地板#
发布于:2003-12-20 09:56
循环不行是没有执行DATA0/1轮换
|
|
地下室#
发布于:2002-12-02 10:22
收不到NAK应该高兴才对.
好象不管你发什么命令,都应该有响应才对,格式对,数据体不对回NACK,格式不对回STALL. 首先确定地址对不对、ENDPOINT对不对。 随便说说,请指正。 :) :) :) :) :) ;) |
|
5楼#
发布于:2002-11-28 12:00
前面帖子里公布的资料.
我也是下载调试的. 子程序非常全,我也没看细节,反正不用动一点点. 谢谢原始作者. |
|
6楼#
发布于:2002-11-28 11:50
请qianyu123 帮下忙,
我现在也在调试SL811,采用KEIL编译,8051控制 但是我不论如何发setup包(get_descriptor),但是一直收不到NAK 不知是不是程序问题,我参考了ScanLogic的有关驱动,也没着落。 qianyu123 给提供点帮吗? |
|
7楼#
发布于:2002-11-28 11:38
好象不是延时的问题,我如果等正确的CSW的话,出不来。
|
|
8楼#
发布于:2002-11-28 11:12
为了测试看起来方便,LBA=0的位置已经被计算机用其他的软件清零过了,大不了再格式化回来.因为我用BUS HOUND 只能看到前512字节,写到其他地方读起来不方便.
您所的说的多读几次的方法,我马上试以下. 我还碰到一个问题,即使是READ命令,也不能循环读取.比如我读完了01处的512字节,延时1秒(实验)后再读02处的512字节,发现也不成功. 谢谢帮助. |
|
9楼#
发布于:2002-11-28 10:13
我估计写入的问题可能有两个:
1.你在读csw时,是否只发了一次in的包?正常情况下,U盘的写入会慢一些,所以有可能它还没有处理完要写入的数据,你就来IN包了,这时它当然要发NAK的包了,你可以试着多发一些IN包,直到收到CSW包为止。 2.我看你发的CBW包里面,发现你要发给U盘0x200个数据,你是不是全部发完了?应该要发8个out包。 另外,建议你先不要向LBA=0这个地方写,换一个普通的地址写,因为这个地方是逻辑地址空间的MBR的位置,写数据会破坏U盘。 |
|
10楼#
发布于:2002-11-28 08:49
我说的直接写意思是:枚举成功后,不经过INQUIRY或READ命令,直接按CBW、WRITE(10)、CSW的顺序写U盘。
首先不知道能不能直接写,需不需要其他流程;还有就是命令格式对不对,贴在下面。 BYTE WRITE10[31]={0x55,0x53,0x42,0x43,0,0,0,0,0x00,0x02,0,0,0x00,0,0x0a, 0x2a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00}; BYTE WRBUF[31]={0x55,0x53,0x42,0x43,0,0,0,0,0x00,0x02,0,0,0x00,0,0x0a, 0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00}; 盼指点。谢谢! |
|
11楼#
发布于:2002-11-28 08:12
JOYUP 老兄请再看看。
|
|
12楼#
发布于:2002-11-27 16:24
1、发CBW
2、读数据 3、读CSW 重复1、2、3。 现在发现直接用WRITE(10)或WRITE BUFFER 命令直接写BUF不行,情况是将上面过程中的第二步直接换成写数据,当然CBW中相应标志位也改变了方向。最后发现读CSW时U盘回NACK,数据也没有写进去。是不是写BUF还需要什么其他的步骤。 特请教。谢谢! |
|
13楼#
发布于:2002-11-27 15:48
你是如何循环的?
|
|
14楼#
发布于:2002-11-27 13:33
READ(10)命令也通过,但怎么循环不行.
有经验的老兄指点以下. |
|
15楼#
发布于:2002-11-27 09:51
MD!
加了几行字,52不行了. |
|
16楼#
发布于:2002-11-27 09:04
谢谢楼上的老兄!
INQUIRY命令已经调通, 返回数据为: 00 80 02 02 1F 00 00 00 4F 54 69 20 20 20 20 20 55 6C 74 72 61 20 46 6C 6F 70 70 79 20 20 20 20 31 2E 31 31 CSW:55 53 42 53 00 00 00 00 00 00 00 00 00 但好象只能进行一次INQUIRY命令,第二次U盘回NACK. 现正在调试,先调个READ(10)再说. |
|
17楼#
发布于:2002-11-26 18:11
例如:Inquiry命令
HOST: out pid(ep2) data0/1: 55 53 43 42 XX XX XX XX XX XX XX XX XX XX XX 12 00 00 00 24 00 00 00 XX XX XX XX XX XX XX XX (cbw包) Device ack HOST: in pid(ep1) Device data0/1: 00 80 00 01 01 XX XX XX XX ......(一共0x24个字节,有可能少) HOST: ack HOST: in pid(ep1) Device data1/0: 55 53 43 53 XX XX XX XX 00 00 00 00 00(csw包,00,成功;01/02,失败) 简单的过程就是这样,详细的还要看资料 |
|
18楼#
发布于:2002-11-26 16:22
头痛!!!
有谁有CBW,CSW的范例,麻烦提供以下,以救人于水火. |
|
19楼#
发布于:2002-11-26 14:59
我好象忽略了CBW,CSW? 现正在看资料,争取改正.其他地方也请大家指正,共同提高. 欢迎JSNJSSS进入交流. |
|
上一页
下一页