CH573F HID_CompliantDev例程,增加端點2 In / Out,使用libusb,在Windows下異常,Linux下正常

在HID_CompliantDev例程的基礎上,增加了端點2,修改了USB相關描述符,也在響應的Case語句塊中添加了對應的寄存器處理,下面是修改后的相關描述符

// 設備描述符

const uint8_t MyDevDescr[] = {0x12,0x01,0x00,0x02,0x00,0x00,0x00,DevEP0SIZE,0x3d,0x41,0x07,0x21,0x00,0x00,0x00,0x00,0x00,0x01};

// 配置描述符

const uint8_t MyCfgDescr[] = {

? ? 0x09,0x02,0x37,0x00,0x01,0x01,0x04,0xA0,0x23,? ? ? ? ? ? ? ?//配置描述符

? ? 0x09,0x04,0x00,0x00,0x04,0x03,0x00,0x00,0x05,? ? ? ? ? ? ? ?//接口描述符

? ? 0x09,0x21,0x00,0x01,0x00,0x01,0x22,0x22,0x00,? ? ? ? ? ? ? ?//HID類描述符

? ? 0x07,0x05,0x81,0x03,0x40,0x00,0x01,? ? ? ? ? ? ? //端點1描述符

? ? 0x07,0x05,0x01,0x03,0x40,0x00,0x01,? ? ? ? ? ? ? ?//端點1描述符


? ? 0x07,0x05,0x82,0x03,0x40,0x00,0x01,? ? ? ? ? ? ? //端點2描述符

? ? 0x07,0x05,0x02,0x03,0x40,0x00,0x01? ? ? ? ? ? ? ?//端點2描述符

};


在Windows下,使用libusb中斷模式去讀USB端點2,結果全是端點1的數據;Bus Bound抓包,發(fā)現(xiàn)都是主機都是自動查詢端點1,使用Bus Commander可以發(fā)現(xiàn)有端點2 In / Out。但是執(zhí)行端點2? IN有數據但非??憫苈袝r很還不成功(目前猜測是端點1被Windows主機頻繁查詢,占用USB帶寬,導致端點2效率低下)


在Ubuntu 22.04下,使用libusb讀取端點1和2都正常,但是發(fā)現(xiàn)Linux環(huán)境下USB主機并沒有按照bInterval值,去查詢CH573F HID設備端點,也不影響,就是不知道什么原因!


疑問:

Windows下的問題,是不是相關描述符配置的有問題?增加了端點2 In / Out,HID類報表描述符是否需要修改?

您好?!?span style="color:rgb(51,51,51);">Bus Bound抓包,發(fā)現(xiàn)都是主機都是自動查詢端點1”,正常,BUS HOUND只會顯示完成正常通信的USB包。

使用Bus Commander可以發(fā)現(xiàn)有端點2 In / Out。但是執(zhí)行端點2? IN有數據但非??憫苈?/span>”,這個要檢查是不是上位機產生IN事務的間隔本身就不穩(wěn)定,確實有可能是上位機/處理器的性能不夠,來不及輪詢端點2。

Linux環(huán)境下USB主機并沒有按照bInterval值,去查詢CH573F HID設備端點,也不影響”,從機代碼里沒有做“USB主機是否嚴格按照端點描述符中的間隔來發(fā)起IN事務”這樣的判斷,那么確實是不影響走USB上傳報表的功能的,但是會影響上報率。比如說有些要求8K上報率的鼠標,在部分電腦上只能達到6K的上報率,確實是電腦本身有限制,但不會影響鼠標功能。

Windows下的問題,是不是相關描述符配置的有問題”常見用到多個端點上傳報表的情況:在多個接口組合的設備中,可以用到多個端點來上傳報表,比如說鍵鼠組合設備,分別走不同接口下的不同端點,分別上傳鍵盤/鼠標報表;當然,走同一個端點,通過reportID來區(qū)分不同的功能也是可以實現(xiàn)的。

增加了端點2 In / Out,HID類報表描述符是否需要修改

只是單獨加了一路端點2,但上傳的是完全相同的報表,那么在我看來沒必要,可能window驅動也摸不著頭腦。


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频