[求助]利用CH376的外部固件模式,不能获取配置描述符

调试信息如下

Successfully Connect CPU with CH376

USB Device Disconnected

USB Device Out_Firmware

**(USB Bus Reset Successfully)**

**(USB Bus Reset Successfully)**

**(USB Bus Reset Successfully)**

**(USB Bus Reset Successfully)**

**(USB Bus Reset Successfully)**

**(USB Bus Reset Successfully)**

**(USB Endpoint 0 SETUP Successfully)**

Command Code: 0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00

USB Standard Input Request (Host to Device):GET_DESCRIPTOR--Device Descriptor

Data Wrote : 0x12 0x01 0x10 0x01 0x00 0x00 0x00 0x08

**(USB Endpoint 0 IN Successfully)**

Data Wrote : 0x88 0x88 0x01 0x00 0x00 0x01 0x01 0x02

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 SETUP Successfully)**

Command Code: USB Standard Input Request (Host to Device):GET_DESCRIPTOR--Device Descriptor

Data Wrote : 0x12 0x01 0x10 0x01 0x00 0x00 0x00 0x08

**(USB Bus Reset Successfully)**

**(USB Bus Reset Successfully)**

**(USB Endpoint 0 SETUP Successfully)**

Command Code: 0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00

USB Standard Input Request (Host to Device):GET_DESCRIPTOR--Device Descriptor

Data Wrote : 0x12 0x01 0x10 0x01 0x00 0x00 0x00 0x08

**(USB Endpoint 0 IN Successfully)**

Data Wrote : 0x88 0x88 0x01 0x00 0x00 0x01 0x01 0x02

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 SETUP Successfully)**

Command Code: 0x00 0x05 0x0E 0x00 0x00 0x00 0x00 0x00

USB Standard Output Request (Host to Device):SET_ADDRESS--ADDRESS: 0x0E

Data Wrote :

**(USB Endpoint 0 IN Successfully)**

**(USB Endpoint 0 SETUP Successfully)**

Command Code: 0x80 0x06 0x00 0x01 0x00 0x00 0x12 0x00

USB Standard Input Request (Host to Device):GET_DESCRIPTOR--Device Descriptor

Data Wrote : 0x12 0x01 0x10 0x01 0x00 0x00 0x00 0x08

**(USB Endpoint 0 IN Successfully)**

Data Wrote : 0x88 0x88 0x01 0x00 0x00 0x01 0x01 0x02

**(USB Endpoint 0 IN Successfully)**

Data Wrote : 0x03 0x01

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 OUT Successfully)**

**(USB Bus Reset Successfully)**

**(USB Bus Reset Successfully)**

**(USB Endpoint 0 SETUP Successfully)**

Command Code: 0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00

USB Standard Input Request (Host to Device):GET_DESCRIPTOR--Device Descriptor

Data Wrote : 0x12 0x01 0x10 0x01 0x00 0x00 0x00 0x08

**(USB Endpoint 0 IN Successfully)**

Data Wrote : 0x88 0x88 0x01 0x00 0x00 0x01 0x01 0x02

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 SETUP Successfully)**

Command Code: 0x00 0x05 0x0E 0x00 0x00 0x00 0x00 0x00

USB Standard Output Request (Host to Device):SET_ADDRESS--ADDRESS: 0x0E

Data Wrote :

**(USB Endpoint 0 IN Successfully)**

**(USB Endpoint 0 SETUP Successfully)**

Command Code: 0x80 0x06 0x00 0x01 0x00 0x00 0x12 0x00

USB Standard Input Request (Host to Device):GET_DESCRIPTOR--Device Descriptor

Data Wrote : 0x12 0x01 0x10 0x01 0x00 0x00 0x00 0x08

**(USB Endpoint 0 IN Successfully)**

Data Wrote : 0x88 0x88 0x01 0x00 0x00 0x01 0x01 0x02

**(USB Endpoint 0 IN Successfully)**

Data Wrote : 0x03 0x01

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 OUT Successfully)**

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 IN Successfully)**

Data Wrote :

**(USB Endpoint 0 OUT Successfully)**

获取完整设备描述符后就一直在EP0的IN和OUT之间中断,怎么解决???[Emot]1[/Emot]

看你的程序设备描述符都没有获取完成啊,还有没有看到你发送获取配置描述符的命令下去获取啊。


有了,第一次获取部分设备描述符,然后设置地址之后获取完整的描述符,之后就一直停留在EP0 IN 和EP0 OUT 以下是EP0 IN的中断处理函数: void USB_ep0_in(void) { #ifdef DEBUG0 Printf("**(USB Endpoint 0 IN Successfully)**\r\n"); #endif if(bRequest==0x06) //如果是USB请求获取描述符,继续返回发送剩余描述符 { USB_Ep0_send_data(); //发送剩余的字节数 } else if(bRequest==0x05) //如果是USB请求设置地址,使用SET_USB_ADDR设置地址 { CH376_write_command(SET_USB_ADDR); //设置USB地址,设置下次事务的USB地址 CH376_write_byte(USB_address); } CH376_clear_buffer(); //释放缓冲区,UNLOCK_USB }

以下是EP0 OUT的中断处理函数 void USB_ep0_out(void) { #ifdef DEBUG0 Printf("**(USB Endpoint 0 OUT Successfully)**\r\n"); #endif CH376_write_command(RD_USB_DATA); if(m=CH376_read_byte()) //如果下传数据的长度不为0,读出下传数据 { for(n=0;n { *(tem+n)=CH376_read_byte(); } } // CH376_clear_buffer(); //释放缓冲区,如果前面没有CMD_RD_USB_DATA命令则使用本命令 } ////////////////////////End of function//////////////////////////////


你现在是不是设备没被识别,你把EP0的IN和OUT串口输出去掉,看能不能正常枚举,用bushound抓取数据。


你现在是不是设备没被识别,你把EP0的IN和OUT串口输出去掉,看能不能正常枚举,用bushound抓取数据。


你现在是不是设备没被识别,你把EP0的IN和OUT串口输出去掉,看能不能正常枚举,用bushound抓取数据。


只有登录才能回复,可以选择微信账号登录