請(qǐng)教ch582 HostU2Enum例程在獲取報(bào)表描述符時(shí)候出現(xiàn)的錯(cuò)誤

babde4995af70a662130869fdcdef61.png

上圖是在ch582?HostU2Enum基礎(chǔ)上參考CH559EVT修改而來的代碼;由于CtrlGetU2HIDDeviceReport有SetIdeal操作,所以就直接調(diào)用了,我們的設(shè)備有三個(gè)接口

/*********************************************************************
?*?@fn??????CtrlGetU2HIDDeviceReport
?*
?*?@brief???獲取HID設(shè)備報(bào)表描述符,返回在TxBuffer中
?*
?*?@param???none
?*
?*?@return??錯(cuò)誤碼
?*/
uint8_t?CtrlGetU2HIDDeviceReport(uint8_t?infc)
{
????uint8_t?s;
????uint8_t?len;

????CopyU2SetupReqPkg((uint8_t?*)SetupSetU2HIDIdle);
????pU2SetupReq->wIndex?=?infc;
????s?=?U2HostCtrlTransfer(U2Com_Buffer,?&len);?//?執(zhí)行控制傳輸
????if(s?!=?ERR_SUCCESS)
????{
????????return?(s);
????}

????CopyU2SetupReqPkg((uint8_t?*)SetupGetU2HIDDevReport);
????pU2SetupReq->wIndex?=?infc;
????s?=?U2HostCtrlTransfer(U2Com_Buffer,?&len);?//?執(zhí)行控制傳輸
????if(s?!=?ERR_SUCCESS)
????{
????????return?(s);
????}

????return?(ERR_SUCCESS);
}


調(diào)用CtrlGetU2HIDDeviceReport獲取接口0和接口1的報(bào)告描述符正常,但接口2的描述符不正常,如下圖

c7b372d05acee391b98bad925ec0c08.png

出現(xiàn)0x2E,

#define ERR_USB_TRANSFER? ? ? ?0x20? /* NAK/STALL等更多錯(cuò)誤碼在0x20~0x2F */

所以想請(qǐng)假如何解決這個(gè)問題

另外我們usbhid描述符情況如下附件,是一個(gè)三個(gè)接口的hid類復(fù)合設(shè)備

icon_rar.gifUSB Composite Device.rar


嘗試過用抓包軟件抓包看看嗎,或者用USB分析儀抓包USB總線分析儀 - 南京沁恒微電子股份有限公司 (wch.cn)


樓主,能分享下CH582? usb HOST識(shí)別復(fù)合設(shè)備的程序嘛


您好,主機(jī)枚舉代碼本身是拿到了各個(gè)接口描述符,是可以識(shí)別復(fù)合設(shè)備的,不過主機(jī)例程中沒有做多接口的處理,需要自行添加。

為了方便使用評(píng)估板測試,以USB2口直接接入一個(gè)HID復(fù)合設(shè)備為例,例程代碼只保留了一個(gè)設(shè)備類型在ThisUsb2Dev.DeviceType中。添加其他接口,可以將ThisUsb2Dev.DeviceType改寫為數(shù)組,在InitRootU2Device()中保留多個(gè)接口的類型以及對(duì)應(yīng)的端點(diǎn)號(hào),并改寫主循環(huán)中的搜索設(shè)備的函數(shù)U2SearchTypeDevice(),輪詢每一個(gè)設(shè)備類型數(shù)組來找到匹配的端點(diǎn)繼而進(jìn)行收發(fā)包控制。InitRootU2Device()中的包括主循環(huán)中搜索的“設(shè)備類型”是自定義的,非標(biāo)準(zhǔn)的,比如說DEV_TYPE_MOUSE是定義為USB_DEV_CLASS_HID | 0x30,可以在下面再添加其他設(shè)備類型的宏。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

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