Can you please make sure that SLWR and EOP are both asserted at the last byte? If EOP alone is asserted it will send a Zero length buffer while leaving the current traction unterminated.
So any new transfer would merge with 0.75 * 16K and make it as a complete 16K buffer.
i.e You need to ake sure that the state machine goes to SHORT_PKT state instead of ZLP state. (Refer your state machine diagram in the GPIF Designer software)
- Madhu Sudhan
Yes both SLWR and EOP are both asserted on the last byte.
I used the GPIFII_Designer_sync_SlaveFIFO.cyfx GPIF project. Looking at the SHORT_PKT state there is a COMMIT, IN_ADDR, and IN_DATA action. According to help, the IN_DATA action suppresses the ZLP. I removed the IN_DATA action and recompile. Still no terminated transaction.
I also tried making the the last transfer an odd size, i.e. 750 bytes. This did not work either.
I have observed that if I synchronize the the PC to start reading from the usb bulk endpoint and then enable the hardware to start transferring data to the FX3 via the GPIF, I receive short packets on the PC side.
If I first enable the hardware to transfer data to the PC and then start reading from the bulk endpoint on the pc, I never receive a short packet.
I have worked around the problem for now by embedding a sync code in the video stream.