ch32v307的設(shè)備描述符不能設(shè)置成USB2.10版本。
設(shè)置成2.0的就沒(méi)問(wèn)題。
設(shè)置成2.1會(huì)導(dǎo)致上位機(jī)收不到設(shè)備描述符。
2.0不支持Microsoft OS 2.0描述符,只有2.1以上才支持。
有技術(shù)大佬幫忙看看么?
ch32v307的設(shè)備描述符不能設(shè)置成USB2.10版本。
設(shè)置成2.0的就沒(méi)問(wèn)題。
設(shè)置成2.1會(huì)導(dǎo)致上位機(jī)收不到設(shè)備描述符。
2.0不支持Microsoft OS 2.0描述符,只有2.1以上才支持。
有技術(shù)大佬幫忙看看么?
你好,請(qǐng)問(wèn)你想具體實(shí)現(xiàn)什么功能呢
沒(méi)有接觸過(guò)USB2.1,只能給出以下觀點(diǎn)以供參考。
1.主機(jī)根據(jù)設(shè)備描述符中的的USB協(xié)議版本,加載相應(yīng)的驅(qū)動(dòng)程序,也就是說(shuō),主機(jī)需要支持相應(yīng)的USB版本。
2.V307的描述符是按照USB2.0的協(xié)議寫(xiě)的,并不清楚USB2.1的設(shè)備走什么樣的協(xié)議,所以僅改變描述符中的版本號(hào)是不行的。
3.可以用現(xiàn)有的USB2.1的設(shè)備,進(jìn)行抓包,根據(jù)抓包的數(shù)據(jù)修改V307的代碼和描述符
謝謝回復(fù)。我上面表述應(yīng)該比較清楚:我想實(shí)現(xiàn)的功能就是”使用winUSB驅(qū)動(dòng),通過(guò)Microsoft OS 2.0描述符來(lái)實(shí)現(xiàn)“。
提到的幾個(gè)點(diǎn),主機(jī)是win11,肯定支持usb2.1。
CH55x上面都能實(shí)現(xiàn)的設(shè)備描述符,在v307上改不了。
我主要不明白的是為什么不能改設(shè)備描述符中usb版本為2.1的問(wèn)題。
關(guān)鍵的關(guān)鍵,我在上面已經(jīng)表述清楚了。
v307的設(shè)備描述符中的USB版本號(hào)字段,設(shè)置成2.1會(huì)導(dǎo)致上位機(jī)收不到設(shè)備描述符,導(dǎo)致枚舉進(jìn)行不下去。
設(shè)置成2.0就沒(méi)有問(wèn)題,但是這樣windows主機(jī)端就沒(méi)有辦法請(qǐng)求”Microsoft OS 2.0描述符“,因?yàn)檫@個(gè)只有在識(shí)別到設(shè)備描述符中為2.1版本才支持。
你好,USB版本改為2.1,主機(jī)會(huì)走對(duì)應(yīng)的協(xié)議去獲取描述符,這是只改變USB版本為2.1后的抓包數(shù)據(jù)
與2.0的枚舉過(guò)程相比,多了80 06 00 0F 00 00 FF 00的請(qǐng)求,這是主機(jī)在請(qǐng)求BOS描述符,而307的代碼是2.0的配置,沒(méi)有相關(guān)處理,回復(fù)STALL,所以主機(jī)無(wú)法識(shí)別。
除了BOS描述符之外,還會(huì)有其他請(qǐng)求,307的代碼中也沒(méi)有相關(guān)處理,可以查找相關(guān)協(xié)議去修改307的代碼,比較節(jié)省時(shí)間的方法是用一個(gè)可以正常使用的USB2.1的設(shè)備,抓包后,根據(jù)抓包數(shù)據(jù)修改307的代碼和描述符。
非常感謝您的回復(fù)。不過(guò)您還是沒(méi)看明白我的問(wèn)題。你說(shuō)的這些問(wèn)題我全都知道的。
您說(shuō)的這個(gè):
可以正常使用的USB2.1的設(shè)備,抓包后,根據(jù)抓包數(shù)據(jù)修改307的代碼和描述符。
你說(shuō)的這個(gè)步驟我也做了,有完整的抓包數(shù)據(jù),我也按照抓包數(shù)據(jù)修改了307的代碼和描述符,關(guān)鍵關(guān)鍵的問(wèn)題就是第一步就進(jìn)行不下去,原因就是:“307的設(shè)備描述符中描述版本的字段從0200改成0210就會(huì)導(dǎo)致無(wú)法上報(bào)給主機(jī)”。
我說(shuō)的這個(gè)問(wèn)題,如果您手中有307的板子大可以一試,你會(huì)發(fā)現(xiàn)這要改這個(gè)版本號(hào),上報(bào)的設(shè)備描述符就變成了全0.
所以設(shè)備描述符無(wú)法上傳,主機(jī)就無(wú)法得知設(shè)備的USB版本,也不會(huì)有后面2.1協(xié)議中的“80 06 00 0F 00 00 FF 00”。只要設(shè)備描述符上傳正常了,后面的步驟才能進(jìn)行下去。
你好,這個(gè)純粹是協(xié)議的問(wèn)題,和是什么芯片沒(méi)有關(guān)系
1.307的設(shè)備描述符中USB版本改為2.1為什么無(wú)法識(shí)別,上面已經(jīng)說(shuō)了,是因?yàn)椋焊臑?.1后,會(huì)請(qǐng)求BOS描述符,而307的代碼里沒(méi)有處理,回復(fù)了STALL,如果307的代碼里加上這樣的處理,是可以識(shí)別的。
2.WinUSB,307的代碼里有BOS的描述符,但是這個(gè)描述符是無(wú)法使用WinUSB的,需要去找協(xié)議自行修改。
如圖是一個(gè)WinUSB設(shè)備的抓包,請(qǐng)求完BOS描述符后,又有C0開(kāi)頭的請(qǐng)求,類似的請(qǐng)求,我們307的例程中沒(méi)有相關(guān)處理,同樣需要你去根據(jù)協(xié)議修改代碼。
你好,你還是沒(méi)有仔細(xì)看過(guò)我描述的問(wèn)題。 下面的描述加粗了,請(qǐng)重點(diǎn)理解一下。
抓包的事情我早就做過(guò)了!改為2.1后,WinUSB協(xié)議上要做什么事情我也很清楚!
設(shè)備端BOS描述符這些我都根據(jù)協(xié)議改好了!
請(qǐng)問(wèn)你上面這段是用V307抓的嗎?如果不是,我還是建議你用V307試試。主機(jī)收不到設(shè)備描述符,哪里來(lái)的后面BOS描述符請(qǐng)求步驟啊?插上去就是無(wú)法識(shí)別的USB設(shè)備,就因?yàn)樵O(shè)備描述符改了2.1,PC接收的設(shè)備描述符變成了全0。
如果你用V307可以上報(bào)2.1的設(shè)備描述符,那就是USB驅(qū)動(dòng)初始化有什么問(wèn)題。
你好,你可以對(duì)比一下你的抓包數(shù)據(jù),我是用的307,這是設(shè)備管理器的截圖
或者你可以把抓包的數(shù)據(jù)發(fā)我郵箱zc@wch.cn,我照著你的抓包數(shù)據(jù)寫(xiě)一個(gè)一模一樣的固件給你
非常感謝。
我以及給你發(fā)了郵件。倒不用麻煩你寫(xiě)一個(gè)一模一樣的,只需要幫忙看看為啥不能改成USB2.1的問(wèn)題,或者給我一份你能正常枚舉USB2.1的程序給我參考即可。