枚舉時只能監(jiān)控到18字節(jié)設備描述符上傳然后就復位重新枚舉,接下來win7系統(tǒng)就提示不能安裝驅動,求解決方法,另外誰能詳細解釋下同步狀態(tài)是怎么回事??。謝謝 [size=5]文字[/size]
是地址設置之后的18字節(jié)設備描述上傳
第一次地址0獲取到了18字節(jié)設備描述符之后,復位,然后設置地址,再從該地址上獲取設備描述符、配置描述符等。如果安裝我們驅動,如果USB那塊電路沒問題,控制傳輸默認正確通過。
電路應該沒問題,內置固件安裝驅動是成功的,就是外置固件模式的時候枚舉失敗。 第一次地址0獲取8字節(jié)設備描述符之后,沒有看到復位,直接設置地址,再用地址上傳18字節(jié)的設備描述符,然后接到2次長度為0的EP0_OUT中斷(收到狀態(tài)過程18字節(jié)應該上傳成功的)下面就復位,沒有請求配置描述符。接著就再次重復這一過程,最后提示不能識別。中斷,掃描方式都試過了,外置模式不成功。
另外內置固件模式能夠識別CH372
下面是我的監(jiān)控 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.
掃描方式已經成功,中斷方式還是卡在那里
主啊,終于通過了
怎么通過的,我也是這樣。
是不是設備描述符有問題?你的執(zhí)行過程是怎樣的?
我用的是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?
到此為止再也收不到上位機應該發(fā)的數據:80 06 00 02 00 00 09 00而是循環(huán)3次以上程序后顯示“無法識別USB設備”
首先,換一個VID PID 也就是“88 88 55 ff”字段,后面的“09 00 ”換成“00 01”。然后去掉所有打印信息。
?
終于通過了,太多printf惹的禍。謝謝!