还在折腾FreeRTOS + USB Host HID 鼠标。之前分享了fifo的bug,今天解决了无线鼠标的问题,主要是无线鼠标接收器一般有两个Interface,一个是键盘,一个是鼠标。键盘可以工作在boot protocol,鼠标试了两个都不行,因此必须解析report descriptor,好麻烦。先弄了个简单的识别出report的有几个字节,至少可以区分手头上的几个鼠标了。有空再分享解决方案。
现在的大问题还是枚举,上电10次有1次不成功。热插拔每一次都不成功。状态机一个套一个,看着头晕。打印调试信息,发现是第一条查询描述的Setup wait没等到,然而又没有新的事件触发USBH_Process。
打印出来的正常流程如下:
USB Device Attached
ENUM_IDLE
ENUM_IDLE
CTRL_SETUP
ENUM_IDLE
CTRL_SETUP_WAIT 0
ENUM_IDLE
CTRL_SETUP_WAIT DONE
ENUM_IDLE
CTRL_DATA_IN
ENUM_IDLE
CTRL_DATA_IN_WAIT DONE
CTRL_DATA_IN_WAIT 1
ENUM_IDLE
CTRL_STATUS_OUT
ENUM_IDLE
CTRL_STATUS_OUT_WAIT DONE
不正常的如下:
USB Device Attached
ENUM_IDLE
ENUM_IDLE
CTRL_SETUP
ENUM_IDLE
CTRL_SETUP_WAIT 0
折腾了一天,还有点低烧,hold不住了,收工回家。有谁解决过这个问题请提点一下,谢谢。
|