- I understand that your application uses both transmitting and receiving data from FX3. Please correct me if I am wrong.
- When reading data from the FX3, the data transfer API call will return in one of the following cases.
1. When the requested data has been sent by FX3.
2. When there is a short packet sent by FX3.
3. When there is a zero-length packet sent by FX3.
The second and third condition is accomplished by the PKTEND# pin. When there is a short packet being sent by the GPIF II interface, it should either be wrapped up using the CyU3PDmaChannelSetWrapUp() API or the PKTEND# pin signalling.
Please follow these steps while sending data from FX3.
Can you please elaborate more on the failure that occurs when the data is transferred from the host to FX3?
Our USB device works in slavefifo mode, in which firmware only declares the size of cache and block transfer without special processing. Our problem is that when a computer accesses USB device data using beginxfer function, if the receiving design cache and firmware settings are inconsistent or the access speed is not matched, the connection failure will easily occur. When the USB device FIFO is in full state and the host computer receiving program is enabled, the data can be received normally.
- I am not clear with your application. Can you please elaborate on "if the receiving design cache and firmware settings are inconsistent or the access speed is not matched, the connection failure will easily occur" ?