AnsweredAssumed Answered

PPI Buffer underun with LCD at VDK

Question asked by Tommy on Jul 8, 2009
Latest reply on Oct 7, 2009 by Tommy

Hi,

 

I would like to use the BF561 in combination with a camera Sensor and LCD.

 

I am using a BF561 EZ Kit with a Micron Sensor M09024 at PPI0 and a LCD on PPI1. I am using VDSP++ 5.0 Version 6.

 

I have used the sensor stream sample from the ADI Multimedia sample and adjusted the drivers for the LCD and Micron Sensor. This works perfect at a main loop and I can see the video on the output of the LCD from my sensor.

 

I have ported this do a VDK project since I need to have the lwIP stack later for Ethernet. Thus I have used the VDK default template and written so far only two threads which are going to be started. One is initializing the Micron Sensor and the other one is initializing the LCD Driver.

 

In first thread I am doing now nothing else than let the LCD read the buffer for LCD output from L3 SDRAM Bank 2 memory via DMA for LCD. At the memory address there is a test image prepared for the LCD output. In the second thread I used the Micron sensor driver and let this capture by DMA to SDRAM Bank 3. Both are using two independent callback functions.

 

The problem is the LCD driver. I got always PPI Status error UNDR_1 after 5 seconds on LCD PPI when I run both threads at my application. This is not the case when I started both drivers just in one main loop without VDK. So I assume hardware and driver implementation is OK. When I but later both drivers in one VDK thread it is the same issue. I got a PPI underun and the image is shifted after 5 seconds. When I just stop the Sensor driver in my VDK and only using the LCD driver the LCD display is fine.

 

Again the processor itself is doing nothing just DMA loopback. I have just only two threads starting just the Device drivers with independent callback. Both are just looping back the data via DMA.

 

What could be the reason when I use the DMA controller in loopback mode on both devices with VDK? I have also given the PPI 2 (respective PPI1) with the LCD already higher priority without any change!

 

result=adi_dma_SetMapping(ADI_DMA_PMAP_PPI1,ADI_DMA_DMA1_1);

result=adi_dma_SetMapping(ADI_DMA_PMAP_PPI2,ADI_DMA_DMA1_0);

 

In attachment there is a screenshot what happens. The before centered image on the LCD screen is than shiften on the screen after 5 seconds 10 pixels left and 20 pixels down.

 

Any suggestion what is going wrong?

 

Thanks you for the support!

Attachments

Outcomes