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.
Please use IN_DATA action along with the COMMIT action in that state.
Otherwise, calling only COMMIT may generate an extra Zero Length Packet.
To accommodate this change, you need to reduce the data count by one.