STM32H7 USB Low Speed Enumeration fail issue
Hello,
Greetings to all community members,
This post is regarding USB enumeration in STM32H7 series. I am currently using MCU STM32H747XIH6 for one my project in which I am configuring this MCU in USB Host by using USB_OTG feature available in it. I am using firmware package of STM32Cube_FW_H7_V1.11.0 as a reference driver and USB HOST library from it.
I am currently testing USB HID Keyboard on the custom PCB of above mentioned controller from which it has been observed that some keyboard are get detecting (i.e. enumerating and then registering its class) while some are not.
For example, if I connect "DELL" keyboard to my PCB then it get fail in enumeration process, while other keyboard get enumerated after some trials and some keyboard get enumerated instantly...!!!
While debugging though code, I found that after HOST_DEV_ATTACHED stage is completed and HOST_ENUMERATION stage get starts, it first transfer command of get descriptor from USB keyboard and in state machine of USBH_PROCESS(), after CTRL_SETUP_WAIT stage, nothing get happened and it get repeats its states as per state machine.
Further debugging, I also found that after first command send from STM32H7 to keyboard, URB status was first "URB_TXERR" and then "URB_NOTREADY" and get stuck there till device plugged in there.
I want to know why some of keyboard which is "LOW SPEED" category device get enumeration while some are not? Is there any update in library of USB peripheral which I need to implement or I need to change some code section?
If anyone already faced this or similar kind of issue then please give suggestion or direction for debugging of same.
If any further information required then please let me know.
