一开始我使用 STM32CubeF4 固件包里的 HID_Standalone 例程,之后又使用 STM32Cube 配置器新建工程。
两种情况下,我通过 OTG 接口分别接入 3 款不同鼠标和 1 款键盘,并非所有设备都可以和单片机正常通信,
Typhoon 40260 鼠标:中间件`usbh_core.c`文件内的`USBH_Process`状态机会卡在HOST_ENUMERATION状态。
`USBH_HandleEnum(phost)`函数读取设备描述符,但`USBH_HandleControl()`函数一直读到`USBH_URB_NOTREADY`状态,直到中断触发HAL_HCD_Disconnect_Callback()`断开回调函数。
Trust 16144 鼠标:故障现象和 Typhoon 鼠标一致,区别是不会触发中断的`HAL_HCD_Disconnect_Callback()`回调。
戴尔 XN966 鼠标:全部功能正常,可以正常读取设备数据。
华硕 G01 KB 键盘:`usbh_core.c`中的`USBH_Process`状态机会走到HOST_DEV_DISCONNECTED状态并执行后台处理 BgndProcess;但无法收到任何数据,HID 句柄内部 FIFO 缓冲区的尾指针和头指针 数值完全相等。
清问什么出现上述不同外设的不同情况?
|
|