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