I am requesting some technical guidance around an issue I have where the Host controller halts an endpoint on the FX2.

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

cross mob
domac_3648851
Level 1
Level 1
Welcome!

I am using the CY7C68013A-128AXC to control a document scanner; the scanner transports items through an imager and lifts ~12MB of data.

Approximately 1 document is processed per second up to 75 documents can be managed as a bunch and stripped.

Command and response is managed over EP 4 & 2. EP 6 and 8 are used as BULK IN EPs for image and other data transfer.

The system is running at high speed (USB 2.0).

The system works well and I can see the normal flow of data on USB as we run commands over the BUS and ARM the image EPs to collect the data.

The BULK IN system works effectively and I can see the use of NAKs where appropriate.

Rarely though I will get a short window (100us) of BUS timeout/turnaround errors.

If I get three turnaround errors on a single EP the EP is halted and this effectively stops our transport, as we can't progress documents if we can't shift the image data.

This is an example of the issue.

pastedImage_0.png

I have just lifted 512 bytes from EP 8.

I then hit the window where each EP is effectively ignored by the FX2.

EP8 gets three strikes and the EP is halted by the USB HOST.

Interestingly EP 6 and 2 only get three strikes and actually recover with NAKs then deliver the data.

It looks like the FX2 has had it's Interrupt masked as the system has totally ignored the Host requests.

We are struggling to reproduce this at will, it is very rare but is impacting performance.

Is there a know weakness in this area, what could explain the turnaround errors.

My feeling is that I have some kind of race condition, I don't think this is noise or a ESD event it is too controlled and specific.

I suspect that all EPs are unresponsive, it was only EP 2 6 and 8 that were active during this window (100us).

Thanks in advance.
Don

0 Likes
1 Solution

Hello Don,

Since the BULK requests with high data length value seem to be issued at the same time to multiple endpoints, the USB bus gets occupied with the data transfer on one of the endpoints, thereby leading to timeout on the other(s). Try serializing the data that is sent to multiple endpoints to such avoid timeout errors.

Best regards,

Srinath S

View solution in original post

0 Likes
3 Replies
SrinathS_16
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hello Don,

Can you please share the .usb file from the analyzer and also the FX2 firmware if possible?

Best regards,

Srinath S

0 Likes

Srinath

I can send the code, USB trace and supporting doc direct to yourself.

I would need to keep these documents confidential but happy to share results.

Let me know if this is OK and give me a contact e-mail.

Thanks

Don

0 Likes

Hello Don,

Since the BULK requests with high data length value seem to be issued at the same time to multiple endpoints, the USB bus gets occupied with the data transfer on one of the endpoints, thereby leading to timeout on the other(s). Try serializing the data that is sent to multiple endpoints to such avoid timeout errors.

Best regards,

Srinath S

0 Likes