FX3 transfers seems to be losing data | Cypress Semiconductor
FX3 transfers seems to be losing data
I am wiring up an embedded device to trasmit data via the FX3 to a PC. I'm using pretty much a stock SlaveFifoSync.img from the examples in the development kit, and the GPIF interface. I'm transmitting 16 bits per PCLK toggle.
My data comes from reading a 16-bit ADC. I end up with 2048 ADC reads per data packet, ie 4096 bytes of date per packet.
I figure I *should* be able to just put the data on the data lines, then toggle PCLK to load it, repeat that 2048 times, then terminate the transfer with a PKTEND toggle.
But I lose data. The content is obviously there, but it's not in the right place.
If I add some dummy PCLK toggles, and by some I mean 12 at the front and 88 at the back of each toggle, everything I get lines up nicely, but I end up missing some samples in there.
What I'm thinking is that even though I'm doing a 4096 byte transfer, what's actually happneing is about four 1024 transfers (size of the xmit buffer in the config I have), and that there are some expected header bytes, or possibly some delays that the extra PCLK toggles are making up for.
I have read the documentation, but I'm obviously missing something. Would greatly appreciate input.