I'm using the EPPI of the BF548 with uclinux to grab a video stream from a CMOS imager directly accessing the PPI (no drivers in between).
What I don't understand right now is why my EPPI misses every second frame of the video stream - the sensor pushes them out at 100fps (line-sync) but i just get the transfer-completed interrupts @50Hz.
For the software I'm using the PPI in 2-sync mode, 8bit-width, packing enabled.
the DMA operates with a descriptor link-list, storing the images in different frame buffers in a mmaped region in the external RAM.
Here's my completed config:
#define image_height 360
#define image_width 240
#define PPI_CONTROL XFR_TYPE | 0x20 | DLEN_8 | PACKEN
#define DMA_CONFIG DMAFLOW_LARGE | NDSIZE_9 | WNR | WDSIZE_32 | DMA2D | DI_EN
#define PPI_FRAME image_width
#define PPI_LINE image_height
#define DMA_X_CNT image_height/2
#define DMA_Y_CNT image_width
#define DMA_X_MOD 4
#define DMA_Y_MOD 4
A little bit confusing is that the EPPI status register usually signals a 0x4 => Line Track Overflow error. Could that lead to my frameloss?
I actually have no real idea in which direction to debug to - I've checked the config multiple times now. Do you have an idea what could be wrong?
Thanks for your help,