FX3 with 32-b Slave FIFO & Bulkin endpoint stuck | Cypress Semiconductor
FX3 with 32-b Slave FIFO & Bulkin endpoint stuck
I'm using a CYUSB3012 with the 32-b standard slave fifo(based on AN65974) connected on a FPGA. The FX3 firmware doesn't use any interrupt for the DMA transfer (direct transfer)
Host is based on WIN7 & cyUSB.net 22.214.171.124
I can do any bulkout & bulkin transfer without any error : I'm using a bulkout xfer for a FPGA request (config, status ...), the FPGA process the request and then send back by writing its answer into the FX3 with a short paket using the pkend flag, finally the host use a bulkin Xfer and verify the FPGA answer. Everything's working fine for many many request/answer of this type. I've also checked all FIFO signals (rdn, wrn, flag a,b,c,d, pkendn) with a logic analyzer.
Now in a special mode the FPGA does not answer to the request i.e. it is just a host request. I mean it is a normal behavior of my firmware. In this mode I'm still using the CyUsb.net XferData on the bulkin endpoint and as expected, the function exit with a timeout error since the FPGA didn't write any data to the FX3 : EPIN.LastError=997, NtStatus=995, UsbdStatus= 0xC0010000. Seems normal.
And here is my problem : When I come back to a standard host request/ FPGA answer, then I'm stucked. I've checked the FIFO signals : all of them are correct (FPGA read the request from the host, process it, and write back to the FX3 GPIF with a short packet end assertion). Everytime I use the request/answer mode, the cyUsb.net XferData function always exit with the following error : EPIN.LastError=997, NtStatus=23, UsbdStatus= 0xC0000011.
I've tried the Abort function but it does nothing. How can get out from this error code ?