在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類報表描述符是否需要修改?