阅读:1339回复:7
大家看看这是怎么回事(附带波形),求救,有分。
unsigned char buff1[8]={0x00,0x05,0x01,0x00,0x00,0x00,0x00,0x00};
SL811Rst (); SL811Write (IntEna, 0x21);//执行后IntStatus=0x80 SL811Write (IntStatus, 0xff); SL811Write (EP0Address, 0x10); SL811Write (EP0Address, 0x10); SL811Write (DATASet, 0xE0); SL811Write (CSOFcnt, 0xAE); SL811Write (CtrlReg, 0x08);//执行后IntStatus=0x60 Delay_ms(20); SL811Write (CtrlReg, 0x01);//执行后IntStatus=0xe0 for (i = 0; i < 8; i ++) SL811Write (i + 0x10, buff1); SL811Write (EP0Counter, 0x00); SL811Write (EP0Status, 0xD0 | 0x00); SL811Write (EP0Control,0x1); //循环产生波形 while (1) { SL811Write (IntStatus, 0x0ff); SL811Write (EP0Control,0x27); if(SL811Read (IntStatus)!= 0x04 ) break; ClearWatchDog(); } 大家看看这段代码,U盘始终是插上的: 1、看看IntStatus寄存器的变化是否正常。 2、在循环中,EP0Status始终是0x04(超时),跳不出循环 能看到sof和setup以及data0(见附件),但就是没有ACK。 [编辑 - 7/22/04 by stonehillzou] [编辑 - 7/22/04 by stonehillzou] [编辑 - 7/22/04 by stonehillzou] |
|
沙发#
发布于:2004-07-23 06:34
你这一步的前面读取设备的描述府有ACK返回吗?
|
|
板凳#
发布于:2004-07-23 09:14
仔细阅读811例程,里面超时会做处理的。cypress技术支持很好,有问题问他们。
[编辑 - 7/23/04 by clementzhao] |
|
地板#
发布于:2004-07-23 09:49
回clementzhao: 能不能给我cypress的技术支持电话,我都找了好多天了,谢谢!
|
|
地下室#
发布于:2004-07-23 09:52
回Darlingsusb:这是我和U盘交换数据的第一步,还没取设备描述符呢。
为什么插上u盘,经常读到0x60,0xE0,0x80,总线复位后就变成0x60了,detect/resume =1不是表示没有设备吗?? |
|
5楼#
发布于:2004-07-23 17:57
各位老大,你们能给我一个具体的sl811和单片机的硬件连接图吗?帮我过了这一关,我和你们一起前进吧.我的Email:alex_hesheng@sina.com.cn
QQ:394091623 POPO:alex_hesheng |
|
6楼#
发布于:2004-07-24 19:56
不插U盘读到0x40,插上U盘,读到0xA0,0x05写0x08后读到0x60,写0x00后读到0xE0,清中断后读到0x80
|
|
7楼#
发布于:2004-07-25 11:59
cypress的技术支持可以直接到www.cypress.com上面查,
sl811的资料中有一个develop kit,里面不仅有电路图,还有appliction note,写得还是很详细的 不过对于sl811-dk好像cypress已经不做了,网站上推荐你看ez811-dk,你也下载下来看看,有些东西还是有用处的:) |
|