枚举时只能监控到18字节设备描述符上传然后就复位重新枚举,接下来win7系统就提示不能安装驱动,求解决方法,另外谁能详细解释下同步状态是怎么回事??。谢谢 [size=5]文字[/size]
是地址设置之后的18字节设备描述上传
第一次地址0获取到了18字节设备描述符之后,复位,然后设置地址,再从该地址上获取设备描述符、配置描述符等。如果安装我们驱动,如果USB那块电路没问题,控制传输默认正确通过。
电路应该没问题,内置固件安装驱动是成功的,就是外置固件模式的时候枚举失败。 第一次地址0获取8字节设备描述符之后,没有看到复位,直接设置地址,再用地址上传18字节的设备描述符,然后接到2次长度为0的EP0_OUT中断(收到状态过程18字节应该上传成功的)下面就复位,没有请求配置描述符。接着就再次重复这一过程,最后提示不能识别。中断,扫描方式都试过了,外置模式不成功。
另外内置固件模式能够识别CH372
下面是我的监控 BUS_RESET. BUS_RESET. BUS_RESET. BUS_RESET. BUS_RESET. SETUP--Device--Out. EP0_IN--Descriptor--Out. EP0_OUT--Out. EP0_OUT--Out. EP0_OUT--Out. EP0_OUT--Out. SETUP--Set Address--Out. EP0_IN--Addr:0x06 --Out. SETUP--Device--Out. EP0_IN--Descriptor--Out. EP0_IN--Descriptor--Out. EP0_IN--Descriptor--Out. EP0_OUT--Out. BUS_RESET. BUS_RESET. BUS_RESET. BUS_RESET. BUS_RESET. SETUP--Device--Out. EP0_IN--Descriptor--Out. EP0_OUT--Out. EP0_OUT--Out. EP0_OUT--Out. EP0_OUT--Out. SETUP--Set Address--Out. EP0_IN--Addr:0x06 --Out. SETUP--Device--Out. EP0_IN--Descriptor--Out. EP0_IN--Descriptor--Out. EP0_IN--Descriptor--Out. EP0_OUT--Out. BUS_RESET. BUS_RESET. SETUP--Device--Out. EP0_IN--Descriptor--Out. EP0_OUT--Out. EP0_OUT--Out. EP0_OUT--Out. EP0_OUT--Out. SETUP--Set Address--Out. EP0_IN--Addr:0x06 --Out. SETUP--Device--Out. EP0_IN--Descriptor--Out. EP0_IN--Descriptor--Out. EP0_IN--Descriptor--Out. EP0_OUT--Out. BUS_RESET. BUS_RESET. BUS_RESET. SETUP--Device--Out. EP0_IN--Descriptor--Out. EP0_OUT--Out. EP0_OUT--Out. EP0_OUT--Out. EP0_OUT--Out. SETUP--Set Address--Out. EP0_IN--Addr:0x06 --Out. SETUP--Device--Out. EP0_IN--Descriptor--Out. EP0_IN--Descriptor--Out. EP0_IN--Descriptor--Out. EP0_OUT--Out.
扫描方式已经成功,中断方式还是卡在那里
主啊,终于通过了
怎么通过的,我也是这样。
是不是设备描述符有问题?你的执行过程是怎样的?
我用的是CH376外固件模式,前期初始化正常通过。进入中断后,如下:
Interrupt_status...: 0f
Interrupt_status...: 0f
Interrupt_status...: 0c
接收到上位机数据: 80 06 00 01 00 00 40 00
返回描述符:12 01 10 01 00 00 00 08
Interrupt_status...: 08
返回描述符:88 88 55 ff 09 00 01 02
Interrupt_status...: 00
Interrupt_status...: 00
Interrupt_status...: 0c
接收到上位机数据: 00 05 04 00 00 00 00 00
Interrupt_status...: 08
启用新地址: 04
Interrupt_status...: 0c
接收到上位机数据: 80 06 00 01 00 00 12 00
返回描述符:12 01 10 01 00 00 00 08
Interrupt_status...: 08
返回描述符:88 88 55 ff 09 00 01 02
Interrupt_status...: 08
返回描述符:00 01
Interrupt_status...: 08
Interrupt_status...: 00
到此为止再也收不到上位机应该发的数据:80 06 00 02 00 00 09 00而是循环3次以上程序后显示“无法识别USB设备”
首先,换一个VID PID 也就是“88 88 55 ff”字段,后面的“09 00 ”换成“00 01”。然后去掉所有打印信息。
终于通过了,太多printf惹的祸。谢谢!