0

我正在开发一个 HID 主机应用程序来与自己的设备通信,并且我正在使用 NUCLEO-F446ZE 板。一开始,我尝试使用 STM32CubeF4 固件包中的 HID_Standalone 应用程序,然后尝试使用 STMCube 配置器开发新应用程序。

在这两种情况下,我都尝试连接(使用 OTG 连接器)3 种不同类型的鼠标和 1 个键盘,但并非所有设备都能够与微控制器通信:

  • 使用 Typhoon mouse 40260 中间件的 usbh_core.c 文件中的 USBH_Process 状态机,阻塞在 HOST_ENUMERATION 状态(第 462 行),因为 USBH_HandleEnum(phost) 函数尝试获取设备描述符(第 646 行相同的文件)但 USBH_HandleControl()函数在中断调用 HAL_HCD_Disconnect_Callback() 之前一直读取 USBH_URB_NOTREADY 状态(usbh_ctlreq.c 的第 600 行)。
  • Trust 鼠标 16144 与 Typhoon 鼠标相同,不同之处在于 HAL_HCD_Disconnect_Callback() 不会被中断调用。
  • 使用戴尔鼠标 XN966 一切正常,我可以看到数据。
  • 使用华硕键盘 G01 KB,usbh_core.c 中的 USBH_Process 状态机到达 HOST_DEV_DISCONNECTED,其中有 BgndProcess 但我无法接收数据,因为在 HID_Handle 中,fifo 的尾部和头部具有相同的值。

之前的所有设备都经过 PC 测试并且工作正常,并且电路板由外部电源供电。

可能是什么问题,我该如何解决?提前致谢

4

0 回答 0