Проблемы с HID Host и STM32F4
Я разрабатываю приложение HID Host для связи с собственным устройством и использую плату NUCLEO-F446ZE. Сначала я попытался использовать приложение HID_Standalone в пакете прошивки STM32CubeF4, а затем попытался разработать новое приложение с помощью конфигуратора STMCube.
В обоих случаях я пытался подключить (с помощью разъема OTG) 3 разных типа мыши и 1 клавиатуру, и не все устройства могут взаимодействовать с микроконтроллером:
- с помощью мыши Typhoon 40260 конечный автомат USBH_Process в файле промежуточного программного обеспечения usbh_core.c, блоки в состоянии HOST_ENUMERATION (строка 462), поскольку функция USBH_HandleEnum(phost) пытается получить дескриптор устройства (тот же файл строки 646), но USBH_HandleControl() функция читает все время состояние USBH_URB_NOTREADY (строка 600 из usbh_ctlreq.c) до тех пор, пока HAL_HCD_Disconnect_Callback() не будет вызвана прерыванием.
- с доверенной мышью 16144 - то же самое с мышью тайфуна, с той разницей, что HAL_HCD_Disconnect_Callback() не вызывается прерыванием.
- с Dell Mouse XN966 все работает нормально, и я могу видеть данные.
- с клавиатурой asus G01 KB конечный автомат USBH_Process в usbh_core.c подходит к HOST_DEV_DISCONNECTED, где есть BgndProcess, но я не могу получить данные, потому что в HID_Handle у fifo хвост и голова совпадают.
Все предыдущие устройства протестированы на ПК и работают нормально, а плата питается от внешнего источника.
В чем может быть проблема и как я могу это исправить? заранее спасибо