I'm modifying an old peripheral for optimization, and specifically today for the start, the slave ASIC has to reset all its private memory to 0, and the current solution is to transfer form the computer via USB many times x 128 bytes, and complete the writeOnAsicMemory function of our firmware. This solution uses the waveforms to maintain the transfer between the Cypress (CY 7C68 013A) and our slave ASIC.
Because the USB transfer have too much latency, we've decided to implement the function in the firmware directly, and we would like, at the beginning, ask the GPIF controller take a single memory word (in which the data would have been 0x00) instead of the FIFO. But we haven't find DMA function to do that in the EZ Lib...
So we have decided to run the GPIF tranfer without the AUTOOUT mode (bit to 0) and forge the data, and fill the buffer with zeros. But a problem obviously occurs when the read pointer of the buffer (and the EP2 empty flag) says the buffer is empty.
So my question is, is it possible to force the empty bit to 0, or to make a DMA access (like we can do in single byte write with XGPIFSGLDATLX) in order to complete a multi-byte transaction ? (or sustitute the GPIF module with the CPU for this particular transaction with the ASIC)
Thank you in advance,
Have you found a solution to do this? Please update the thread if you have.
You cannot force the empty bit to 0 in firmware. You can switch between auto and manual modes on the fly and commit the additional bytes when in manual mode and switch back to auto later.