cancel
Showing results for 
Search instead for 
Did you mean: 

LCD controller FIFO underrun

DPfei.16
Associate III

Hello,

i use a custom DSI display on the STM32F769 Discovery Board.

The display has 720x720 pixels and no framebuffer. Therefore I can't use the DSI adapted command mode but I have to use the DSI video mode.

I have the following problem:

When the pixel clock is too low (below 30 MHz) the display is flickering (as the frame rate is too low).

When the pixel clock is above 30 MHz there is no flickering any more but then I get fifo underrun erros when a button is pressed on the display. So the display look completely correct but as soon as I press a button (causing some drawing), I see glitches until the drawing is completed, after which the display look correct again.

This link (https://touchgfx.zendesk.com/hc/en-us/articles/205676691-Debugging-Pixel-Error-Issues) says that the problem occurs because TouchGFX is rendering to one frame buffer in SDRAM while the LCD controller is reading from the other frame buffer. Depending on bus arbitration, this may cause the LCD controller to be denied SDRAM access for a time, long enough for the LCD FIFO to become starved.

The µC is running on his maximum frequency of 216 MHz. I use the generated code from TouchGfx. I only changed the DSI mode from adapted command mode to video mode. I use double buffering.

Does this mean that the selected display is not suitable for the STM32F769 µC or are there some things to optimize?

BR

Daniel

23 REPLIES 23
DPfei.16
Associate III

@Martin KJELDSEN​ do you mean the FIFO underruns or the assertion?

I mean how and why TouchGFX added a dynamic bitmap in RGB888 ? I don't think this is something that the designer will do.

/Martin

DPfei.16
Associate III

No, this is not a bug, this was my fault as I didn't notice this function call in the code:

Bitmap::dynamicBitmapCreate(40, 40, Bitmap::RGB888);

This function call was added from our GUI developer.

   

Ahh, allright. Thanks. Glad things are working now!

/Martin