Skip to main content
MVils.1
Associate II
January 27, 2021
Question

Invalidated widgets flickering

  • January 27, 2021
  • 13 replies
  • 2812 views

We use TouchGfx with a STM32f769 on a custom board. There are many ui widgets like textarea, boxes and buttons. At first the display had a flicker problem. That was solved with just invalidating widgets that should update.

Now the problem is that if a single widget updated with .invaldate(), an other widget - which was previously invalidated - is suddenly flickering.

I found that this occurs with double buffering activated.

Any ideas that could help?

Thanks in advance.

This topic has been closed for replies.

13 replies

franck23
Associate III
January 27, 2021

Hi,

Maybe you are reaching the maximum bandwidth of your SDRAM.

What is your screen size, bit per pixel, and SDRAM width (8, 16 or 32bits)?

Romain DIELEMAN
ST Employee
January 28, 2021

The fact that this happens only with double buffering makes your statement my first guess as well. @MVils.1​ Have a look at your mapfile (.map) and check your memory usage.

/Romain

MVils.1
MVils.1Author
Associate II
January 28, 2021

@Community member

800 x 480 x 16 bpp and SDRAM width is 32bits. LTDC clock 27.375 MHz.

@Romain DIELEMAN​ 

Memory usage looks good. I don't know how to check sdram memory usage, but it's a 128 M and this should be enough ..

0693W000007CzaqQAC.jpg

MM..1
Super User
January 27, 2021

How version TouchGFX you use, and generated code is from CubeMX?

MVils.1
MVils.1Author
Associate II
January 28, 2021

I tought that TouchGfx is always at latest version in cubemx because i check updates often. Just now i saw that you have to migrate the TouchGfx version for your project too. Thanks for the hint.

MM..1
Super User
January 28, 2021

You dont reply numbers , but you can check my example BUGREPORT TouchGFX 4.16 strange display

franck23
Associate III
January 28, 2021

With your config, you shouldn't hit the SDRAM max bandwidth.

Maybe check that your FMC is set to run at 100MHz.

MVils.1
MVils.1Author
Associate II
February 2, 2021

FMC is set to 108 MHz. I read that max is 100 MHz but lowering that didn't help.

franck23
Associate III
February 2, 2021

If your application does not use the SDRAM for other things than TouchGFX, you should have plenty of bandwidth there.

When you say that your widget is flickering, do you mean that it disappear and reappear quickly?

Or does it have horizontal/vertical color lines as if it has been scratch?

I am asking because if it is the full widget that blinks quickly, it would be because it has been updated on only one of the 2 frame buffers.

MVils.1
MVils.1Author
Associate II
February 2, 2021

It's definitely blinking. And it looks like one frame buffer is still in a outdated state.

I just realized that the blinking comes from my invalidation method calls... So actually it's like you said that one of the frame buffers is not working. But i have no idea what's the cause.

franck23
Associate III
February 2, 2021

In MxCube -> TouchGFX software pack -> TouchGFX Generator tab, check the SDRAM start address for both buffers.

For your config (800x480x16bpp) you should have:

Start Address: 0xC0000000

Start Address2: 0xC00BB800

MVils.1
MVils.1Author
Associate II
February 2, 2021

Our setting is 0xC0000000 / 0xC0400000. I tried yours but no difference. Thanks for your help by the way. I ask myself how to evaluate the CubeMX hardware initialization for our custom board... For example the SDRAM "works" and i can see my touch gfx ui on the panel, but that doesn't mean it runs flawless.

I will try to swap my touch gfx design with a minimalistic one and see if the behavior remains.