Strictly necessary cookies are on by default and cannot be turned off. Functional, Performance and Tracking/targeting/sharing cookies can be turned on below based on your preferences (this banner will remain available for you to accept cookies). You may change your cookie settings by deleting cookies from your browser. Then this banner will appear again. You can learn more details about cookies HERE.
Strictly necessary (always on)
Functional, Performance and Tracking/targeting/sharing (default off)
we are using a FX2 controller with a CMOS attached in bulk mode on Windows, mac and linux. In one application we have to use some kind of USB hub between our device and the PC. Due to some noise or other reasons this hub is creating occasionally USB stalls on the bulk endpoint. We can clear the stall condition via the `Reset()` function of the CyAPI.h on Windows. But this seems to re-enumerate the USB device on this port and the application needs to reconnect, which is very inconvenient and takes time. Is there a cleaner way to clear the stall/halt on a bulk endpoint without re-enumerating the devices?
Would appreciate any help on this. Couldn't find much Cypress documentation on USB stall matters.
The re-enumeration should not happen. It is probably due to the USB Hub. After a stall, call Endpoint->Abort(), then remove all IOCTL calls by calling FinishDataXfer() for every queued up transfer. Finally call Endpoint->Reset() to clear the stall and continue with the transfers.