我正在开发一个HID主机应用程序以与自己的设备通信,并且我正在使用NUCLEO-F446ZE板。
一开始我尝试在STM32CubeF4固件包中使用HID_Standalone应用程序,然后,我尝试使用STMCube配置器开发一个新的应用程序。
在这两种情况下,我尝试连接(使用OTG接口)3种不同类型的鼠标和1个键盘,并且没有所有设备都能与微控制器通信:
- 使用Typhoon鼠标40260中间件的usbh_core.c文件中的USBH_Process状态机,阻塞在HOST_ENUMERATION状态(第462行),因为USBH_HandleEnum(phost)函数试图获取设备描述符(第646行相同文件)但是USBH_HandleControl()函数读取所有USBH_URB_NOTREADY状态(usbh_ctlreq.c的第600行),直到HAL_HCD_Disconnect_Callback()被中断调用。
- 使用Trust鼠标16144与Typhoon鼠标相同,区别在于HAL_HCD_Disconnect_Callback()不被中断调用。
- 戴尔鼠标XN966一切正常,我可以看到数据。
- 使用asus键盘G01 KB usbh_core.c中的USBH_Process状态机进入HOST_DEV_DISCONNECTED,其中有BgndProcess,但是我无法接收数据,因为在HID_Handle中,fifo的尾部和头部具有相同的值
所有以前的设备都经过PC测试,工作正常,电路板由外部电源供电。
可能是什么问题,我该如何解决?
提前致谢