[求助]CH372的单片机端开发不能请求配置

枚举时只能监控到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惹的祸。谢谢!


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