cancel
Showing results for 
Search instead for 
Did you mean: 

Wrong (mix of old and new ) display every other screen refresh.

AndrewST
Associate II

Hi,

I am using the STM32H753 EVAL board to control a 1024*768 LVDS display via an RGB/LVDS transmitter. I am displaying an application made with TouchGFX that was started with a 640*480 resolution, then modified to 1024*768 (don't know if that is relevant).

When there is a change in the display that requires a refresh, I will get the right screen every other "refresh". One screen will be right, the other will be a mix of the new display and old display with a vertical offset.

I have attached a few pictures of a simple example where a textarea buffer is being updated with an incremental value from an external event (pulse on a GPIO, CAN message received, whatever).

The application starts with the default text ("xxxxxx") in the right place.

First event, textarea gets updated with the right value ('1') in the right place.

Second event, textarea gets updated with the right value ('2') in the right place but the previous value is also displayed higher on the screen.

Third event, textarea gets updated with the right value ('3') in the right place and the rest of the screen is blank as it should.

Fourth event, textarea gets updated with the right value ('4') in the right place but the previous value is also displayed in the middle of the screen.

And so on and so forth.

The same happens with other types of controls, such as buttons visible or not, progress bar, anything. This does not happen if I revert back to 640*480.

I tried changing TouchGFX' "FrameBuffer Strategy" from Double Buffer to Single but that did not help, the only difference it made was that the old frame is only showing for an instant (every other refresh, still) instead of remaining on every other screen.

The textarea value update is called from the void Model::tick() method as should be.

Once the new value is pushed to the buffer from within the Screen1View class, I call textArea1.invalidate() to force a refresh.

Any idea why every other screen refresh I am displaying a remnant of the precious frame? I am thinking something wrong with the framebuffer maybe? But why only every other refresh, and why in a weird position?

Thank you.

0693W00000bhQiXQAU.jpg 

0693W00000bhQicQAE.jpg0693W00000bhQimQAE.jpg0693W00000bhQiwQAE.jpg0693W00000bhQj1QAE.jpg 

0 REPLIES 0