Skip to main content
Visitor II
September 3, 2019
Question

STM32F429 Discovery as USB Host. Problems enumerating Low-Speed Device over Full-Speed HUB.

  • September 3, 2019
  • 11 replies
  • 6369 views

Hello everyone,

I'm using the STM32F429 Discovery board as a USB Host. Using the ST Host Library I managed to get several different HID devices working (Full Speed and Low Speed).

I changed the Host Library so that it can handle multiple Devices. I also developed a HUB Class driver which is also working fine. My program is now able to work with an USB Hub, as long as I only connect full-speed devices to the HUB.

Since the Host and the HUB is working in Full-Speed I added the PREamble PID for communication with Low Speed devices. The weird thing is now that the enumeration of Low-Speed devices is only working about 50% of the time. Once the Low-Speed device is enumerated I can recieve as many interrupt inputs as I want without any issues. But the other 50% that I connect the Low-Speed device to my HUB the USB core state machine gets Stuck in the enumeration process.

I found similar topics in this forum that are describing the same problems such as:

https://community.st.com/s/question/0D50X00009XkiNNSAZ/stm32f217-usb-fs-host-mode-hub-problem

I also found a thread where an ST employe mentioned something about a hardware issue in the On chip PHY that might be responsible for this error. But I couldn't find any follow up on this:

https://community.st.com/s/question/0D50X00009XkWqHSAV/usb-host-on-usbif-compliance-program?t=1567511633897

as far as I know there is also no errata that describes this problem, yet.

I also found in the User Guide for the emUSB Host stack by segger a mention about this:

https://www.segger.com/downloads/emusb-host/UM10001 (19.3.2.2)

My question now is what is this all about? Is this a know issue? If so is there already an errata about this? If not does anyone know how I could try to work around this issue? And is this problem only occuring on the STMF429 or also on other Chips?

    This topic has been closed for replies.

    11 replies

    Graduate II
    June 21, 2023

    Hi, would it be possible to configure the STM32 to operate with a clock outside the ideal frequency to force the occurrence of errors in the packets?

    In my gamepad test, apparently there was no error control on the packets, so the data was corrupted.

    The post has more details:

    https://community.st.com/t5/stm32-mcu-products/stm32-usb-host-fails-miserably-but-arduino-mega2560-and-uno-with/td-p/569199