Display flicker while displaying the image

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Display flicker while displaying the image

2,079 Views
weizhongyang
Contributor I

We are working on new design about CPU card which include core cortex M3 LPC1850FET180.

We meet a problem.

 

Description of ours system

THE CPU is  composed of :

1 Microcontrôler : LPC1850FET180

1 Spifi flash : S25FL032P (4 M) (code)

1 SDRAM : MT48LC4M16A2P_6A (8 M)

1 Flash parallel 32Mb: SST39VF3201B-70

Driving of display LCD TFT 5,7” (640 X 480)

Display memory LCD 0x28000000-0x28258000 (SDRAM)

Graphics library emWin SEGGER V.530 for NXP

We use double buffer to avoid Flickering effects.

 

 

But display flicker while displaying the image(GUI_DrawBitmap(&bmCB01, 0, 0)) ?

 

 

code:

GUI_Init();

WM_MULTIBUF_Enable(1);

while(1){

GUI_MULTIBUF_Begin();

GUI_DrawBitmap(&bmCB01, 0, 0);// LCD flicker !

GUI_MULTIBUF_End();

GUI_Delay(2000);// LCD ok

GUI_MULTIBUF_Begin();

GUI_DrawBitmap(&bmCB02, 0, 0);//LCD flicker

GUI_MULTIBUF_End();

GUI_Delay(2000);//LCD ok

}

 

 

Kindly give any suggestion.

Labels (1)
Tags (1)
0 Kudos
2 Replies

831 Views
weizhongyang
Contributor I

Thank you very much Bernhard Fink,

in fact we use 24-bit color(1228800 bytes of data per frame from the SDRAM buffer into the display),

that slow down the whole execution on the bus system.

with 16-bit color all works well.

Best Regards,

0 Kudos

831 Views
bernhardfink
NXP Employee
NXP Employee

I would say that the solution is to implement it in such a way that it does not flicker. Sounds ironic, but it isn't :smileywink:

You need to check the boundary condition of your hardware and software setup.

  • Flickering means that the display is refreshed at a rate where the human eye can notice it. For a BMP with 640 x 480 pixels and 16 bit colors you need to transmit 614.400 bytes of data per frame from the SDRAM buffer into the display. This is performed by the dedicated LCD interface DMA. So this interface needs to perform on a let's say 30fps rate to avoid flickering.
  • If you implemented double buffering, the switching between the BMP buffers should be just a matter of switching the base pointer to the buffer to be used. The BMP source is either in SPIFI or in the NOR flash, so if you put both BMPs into SDRAM before enabling the display then you should not experience any problem. Except if your SDRAMperformance is too low because of wrong settings.
  • If you try to get things from the SPIFI or NOR flash into the SDRAM and at the same time you write the content from the SDRAM buffer to the display, then you simply will see that the performance on the bus is lower because of bus sharing. It takes some time to shuffle the data from the nonvolatile flash to the SDRAM, inbetween these memory transfer operations the LCD DMA will shuffle data from the SDRAM to the LCD port and this will slow down the whole execution on the bus system.
  • emWin is maybe not set up correctly to do this job in the right manner, so maybe check existing examples for the right strategy.

Regards,

NXP Support Team