阅读:1758回复:6
救命:枚举过程中出现问题
我在用ISP1581时,枚举不能成功。具体表现为下位机接受到下面9条枚举命令后就接收不到命令了
80 06 00 01 00 00 40 00 00 05 01 00 00 00 00 00 80 06 00 01 00 00 12 00 80 06 00 02 00 00 09 00 80 06 00 02 00 00 FF 00 80 06 00 01 00 00 12 00 80 06 00 02 00 00 09 01 00 09 01 00 00 00 00 00 80 08 00 00 00 00 01 00 对应的固件程序 void get_configuration(void) { if(XmtBuff.cmd.cmd_byte[0] == 0x80) { U_EptIndex = 0x01; U_EptBLength = 1; U_DATA =configurationValue;; U_EptCtrl = 0x08; }else { Stall_EP0(); } } void set_configuration(void) { char j; if (XmtBuff.cmd.cmd_byte[0] == 0x00) { U_EptIndex = 0x01; U_EptBLength = 0x00; U_EptCtrl = 0x08 | 0x02; j = XmtBuff.cmd.cmd_byte[2]; if(j == 0x00) { configurationValue=0; } else if(j == 0x01) { configurationValue=1; } } else { Stall_EP0(); } } 而且用Bus Hound无法看到任何数据。 我是否可以理解为上面的8条命令执行是正确的,只是第9条命令出了问题?会不会是上面的驱动存在问题? |
|
沙发#
发布于:2005-04-15 08:55
这是BUS HUND捕获的数据
13 CTL 80 06 00 01 - 00 00 12 00 GET DESCRIPTR 13 DI 12 01 00 02 - 00 00 00 40 .......@ 71 04 90 08 - 01 01 00 00 q....... 00 01 .. 13 CTL 80 06 00 02 - 00 00 09 01 GET DESCRIPTR 13 DI 09 02 2e 00 - 01 01 00 c0 ........ c8 09 04 00 - 00 04 00 00 ........ 00 00 07 05 - 01 02 40 00 ......@. 01 07 05 81 - 02 40 00 01 .....@.. 13 CTL 00 09 01 00 - 00 00 00 00 SET CONFIG 13 CTL 80 08 00 00 - 00 00 01 00 GET CONFIG 13 DI 01 . 13 CTL 81 0a 00 00 - 00 00 01 00 GET INTERFACE 13 DI ff . 13 USTS 00 0e 00 c0 error 从数据中看,好像是GET INTERFACE命令出了问题,但是我下位机并没有收到GET INTERFACE命令,它返回的FF是如何来的? |
|
板凳#
发布于:2005-04-15 11:02
从你的数据上分析,你的设备是01类设备,不是标准设备.
你的程序是否对GET INTERFACE命令进行解析和处理?你查查看你在 GET INTERFACE程序里干了什么.如果没有对他进行处理的话,查查协 议看看对01类设备的要求是什么. 另:你可以将你的设备类改为标准类(00),然后再试试看能否正常枚举 |
|
|
地板#
发布于:2005-04-15 13:14
mail 你了,试试
|
|
地下室#
发布于:2005-04-21 19:08
你说的太对了,我用BUS HUND看,就是GET INTERFACE命令后就停止了,好像返回的数据是FF,然后提示USB状态出错。我的GET INTERFACE函数没有进行解析。请问如何改成00类,或者如何解析?谢谢,郁闷了好多天。
|
|
5楼#
发布于:2009-04-17 23:48
你是怎么解决问题的???
|
|
6楼#
发布于:2009-08-12 14:44
解决方法说来看看啊!
|
|