Ports and Interfaces > USB

Problem with HUB Class Driver STM32F205

(1/3) > >>

Tops:
I have a problem with enumeration of low speed devices through a hub (working at full speed).
I am using STM32F205 USB full speed (USB_OTG_HS in full speed mode using the embedded full speed phy)
with STM32_USB-Host-Device_Lib_V2.1.0.
I did some modifications to the host lib to support multiple devices / interfaces
and added the hub class driver. Everything is fine with devices working at full speed, but the enumeration
of low speed devices fails sometimes (sometimes it works!). The problem is, that sending the SETUP packet of a low speed control transfer
could result in a transaction error (TXERR).

According to the STM32 manual this error indicates one of the following errors:
- CRC check failure
- timeout
- bit stuff error
- false EOP

I have no hardware analyser, so I am not sure what exactly happens.
I have the suspicion that the false EOP event causes a problem when using low speed devices through a full speed hub.
But if I am right, this should be a problem of the built-in hardware scheduler.
I asked ST for support, but they said, that the problem is not known.

Is there anything else I should keep in mind?

Jan Axelson:
A hardware analyzer would show the bus traffic and might offer a clue. Otherwise, use whatever debugging tools you have to monitor what happens when you send a Setup packet. Does the device return ACK in the Setup stage? If yes, does the device or host send data or does the host attempt the Status stage (depending on the request)?

Tops:
The device doesn`t return ACK. Instead the host channel interrupt register states the transaction error.
After that, the core halts the channel and the host goes to error state. Then the host tries to resend the Setup packet (without success, there`s no interrupt indicating an ACK or another error and the stack doesn`t recover properly).

Tops:
I realized, that right before reporting the transaction error, the core generates a port disabled interrupt.
I don`t know why this is happening, but this should be the reason why the retry fails.

Jan Axelson:
Are you sure the STM32F205's OTG port supports communicating downstream at low speed? I saw no mention of low speed in the datasheet. OTG hosts need to support low speed only if a low-speed device is on the Targeted Peripheral List.

Navigation

[0] Message Index

[#] Next page

Go to full version