Skip to main content
GS1
Senior III
January 18, 2021
Question

TouchGFX Screen flickers when another screen is selected

  • January 18, 2021
  • 14 replies
  • 3396 views

Hi TouchGFX users,

I have a flicker problem which obviously exists since Release 4.14 (maybe already 4.13. as I scipped this release)

Appx. after every 20 ... 30 power cycles the screen initialisation and updates to included widgets flickers. Powering up the system again clears this effect and everything works perfectly.

Please see below video on how this effect looks like. The flicker is only once per screen update.

Of course I use double buffering.

Has anybody an idea of what might be the reason?

P.S: This effect is also seen once when another screen is selected, which does not update values every 0.5 sec like seen in the screen from the video. 

Best regards

GS

This topic has been closed for replies.

14 replies

January 19, 2021

Looks like low SDRAM and FSMC speed

But? if you wrote "exists since Release 4.14 (maybe already 4.13. as I scipped this release)", and "Of course I use double buffering.", I think, that your problem has another reason:

Open file TouchGFXGeneratedHAL, look at

void TouchGFXGeneratedHAL::initialize()
{
 HAL::initialize();
 
 registerEventListener(*(Application::getInstance()));
 enableLCDControllerInterrupt();
 enableInterrupts();
 setFrameBufferStartAddresses((void*)0xD0000000, (void*)0xD0200000, (void*)0);
	 lockDMAToFrontPorch(true);
}

Have your code string " lockDMAToFrontPorch(true);" ??? Try to set this parameter to true

GS1
GS1Author
Senior III
January 19, 2021

Hi ,

thank your for your suggestion, in fact it was set to false, however setting it to true, did not help.

Still there after appx 20 reboots.

MM..1
Super User
January 19, 2021

on double buffer is default and recomm false

MM..1
Super User
January 19, 2021

How you update your values, who is master? Check CAN communication IRQ priority level,

Your issue seems as conflict between LCD refresh and other hw , Levels in IRQ is top RTOS then LTDC then .. then lower CAN.

GS1
GS1Author
Senior III
January 19, 2021

The presented values are updated every 0.5 seconds via handleTickEvent. Values are received via UART every 0.1 sec. from other internal processor which handles reception of CAN data independently.

IRQ levels checked already and are set as proposed.

And I did not change the setting of interrupt priorities since it was working in Version 4.12.0.

The problem occurs only after every 20... 30 reboots.

And in case it happens, it also happens when I simply switch to another screen (which does not change any values while it is active). Then I see just one flicker when the screen is drawn.

MM..1
Super User
January 19, 2021

Try use 4.13 . How work your UART ? DMA IRQ speed how many data? How you update in handleTick ?

GS1
GS1Author
Senior III
January 19, 2021

UART is done via DMA reception. But as already said:

The flicker also happens when only the screen is changed. In this case UART is not involved. Only RTOS, TouchGFX and LCD.

In this case handleTick also is not involved.

I certainly can try with 4.13., but the only thing which I can tell then is: It is working with 4.13. or not. The problem would then still be to solve the issue in 4.16. as switching back from 4.16. to 4.12/4.13 is not an option for my solution.

Bob Bailey
Senior
January 19, 2021

memory leak stepping on your framebuffer?

Bob Bailey
Senior
January 19, 2021

perhaps some issue with the DMA interfering with TouchGFX actions. Try handling the UART stuff with just interupts. I have a similar project with UART and CAN both receiving at moderate speeds with no issues. Currently on version 4.16

Bob

MJonk.1
Associate
April 3, 2023

did you find a solution to this? We are facing a similar issue. Thank you.

GS1
GS1Author
Senior III
April 3, 2023

Hi,

no, the problem still exists and we just have to live with it, unfortunately.

MM..1
Super User
April 3, 2023

Hi long time, but you write still have issue. From video seems conflict repeat is around half second. Better is show your code and write where you comunicate and how.

Model tick is executed alltime, too on screen changes usw.