Why IN endpoint is always STALLED

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
WGT_4383351
Level 5
Level 5
First like received

With Slave/Master example in AN87216, without any data transfer, CyUSBDevice.UsbdStatusString(inEndpoint.UsbdStatus) will returns a stalled state. Is this normal? If so then how to decide when the device is dead?

quote:

"

As an endpoint memory reset will result in some loss of data on the in-flight

endpoint; it is required that the firmware application perform an error recovery on

the corresponding endpoint. This can be done by registering for the

CYU3P_USBEP_SS_RESET_EVT event on all IN endpoints, and performing an

endpoint specific recovery when the event is received. The recommended recovery

procedure is to STALL the endpoint, and then stop and restart the DMA data path

when the CLEAR_FEATURE request is received.

"

When will CLEAR_FEATURE be sent to the device? Is it when inEndpoint.Reset() on the host? But how to decide when to inEndpoint.Reset() if you can't decide whether the device is dead for not if inEndpoint.UsbdStatus will return stalled even the device is not dead?

0 Likes
1 Solution

Hello,

Thank you for the update

As per the connection PC<->extending wire<->4 port hub with a 10cm short tail wire<->two FX3 there is too many connections (which can cause poor link) between device and host.

To debug the problem can you try connecting both the FX3 directly to PC and check the status

Regards,

Rashi

Regards,
Rashi

View solution in original post

0 Likes
40 Replies

Hi,

Please refer to this KBA USBD_STATUS_XACT_ERROR (0xC0000011) on high-bandwidth isochronous IN endpoint which mentions the reason for this error. But this KBA is for isochronous endpoint and not BULK endpoint

Regards,

Rashi

Regards,
Rashi
0 Likes