cancel
Showing results for 
Search instead for 
Did you mean: 

USB host, full/high-speed HUB with low-speed device returns TXERR

Andrej Pi�ek
Associate
Posted on February 06, 2018 at 15:42

I have a problem with enumeration of low speed devices through a hub (working at full speed).

I am using STM32F469II USB full speed (USB_OTG_FS, embedded full speed phy) with HAL lib V1.7.1 

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 with low speed devices enumeration fails sometimes (usually it works!).

The problem always occurs when resetting the channel (EP0) from full to low speed (changing the HCCHAR register) after that the next 

SETUP packet sometimes results in a transaction error (TXERR).

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). 

I would much appreciate if someone could give me any tips on why this error occurs. If not how to solve it, at least how to bypass it - reset the channel to working condition.

0 REPLIES 0