GPIF state machine COMMIT action doesn't work as expected | Cypress Semiconductor
GPIF state machine COMMIT action doesn't work as expected
I've modified the image sensor interface (AN75779) project to work with a LUPA300 image sensor. Since the Vblank period is so low on this sensor, I've changed the state machine to not require CPU intervention to send packets. The DMA was changed from CY_U3P_DMA_TYPE_MANUAL_MANY_TO_ONE to CY_U3P_DMA_TYPE_AUTO_MANY_TO_ONE. This works for the most part, except sometimes the state machine data count (LD_DATA_COUNT, COUNT_DATA) desyncs from whatever internal counter commits the complete 16k packets. This causes data to be pushed into the wrong sockets by the state machine.
I tried to correct this by lowering the LD_DATA_COUNT value and having the state machine use the COMMIT action to force everything to stay in sync, but about half the data is dropped on average when I do this. Is there something I'm missing with how to use the COMMIT action? A picture of my state machine is attached.