2025-05-09 2:13 PM
I'm seeing "noise" in some objects drawn on the screen. See pic... the yellow circle ("shape") should be solid yellow, but instead includes red-orange horizontal lines. If the circles are rearranged the yellow circle can look correct, but the blue circle may have the lines instead - only lighter blue, not red-orange. Also, the button can include some horizontal lines when showing the "pressed" version. These lines can flicker a bit too.. possibly turning on and off very quickly.
What is causing this and what can be done to fix it?
There was some improvement when setting the Alpha to 255 (from 127) but problem still exists.
Screen is running at RGB565 - don't have enough RAM to run at RGB888. STM32H7a3. No RTOS. Interface is LTDC with DMA2D enabled (but I did try disabling DMA2D). Single layer... what else do you need to know?? Thanks!!
2025-05-13 12:08 AM
Can you try to create an interaction on the screen like the one in the screenshot?
It will force re-rendering the entire screen in every frame.
Does it flicker? Is it still only the yellow circle? Any other artefacts?
If you have any free GPIO accessible, you can name them VSYNC_FREQ, RENDER_TIME and FRAME_RATE to get some debug output, which might be interesting. Performance Measurement | TouchGFX Documentation
2025-05-14 6:24 AM
Thanks for the reply!
I tried the interaction to invalidate() but there was no change. Tried invalidate() whole screen and only the circle. Invalidating the whole screen actually added some new flickering.
Thanks for the suggestion about the debug GPIO. I wasn't aware of that these signals were available. May be helpful.
What I did find was that I couldn't reproduce the noise on the yellow circle with any rearrangements of all the circles, nor on the buttons, however the noise on the blue circle remains in all arrangements. The blue noise did seem to be effected by physically pressing on the 40 pin FFC LCD connector so the remaining noise may be a hardware issue.
Luckily the actual application doesn't require several circles of different colors to be splashed across the screen so the issue may be resolved. Better hardware/connections may clear up the remaining noise.
2025-05-20 5:49 AM
It does sound like a hadware issue.
I would suggest making sure that the LTDC VSYNC frequency is 60 Hz, for example using the TouchGFX performance pins, and that the pixel clock is within the spec of the controller you are using. Apart from that hardware does seem to be the issue if it is affected by physical touch.
2025-05-20 1:01 PM - edited 2025-05-21 1:21 PM
Thanks again!
I configured the performance pins and was able to confirm the VSYNC at about 16mSec (60 Hz), same on the RENDER_TIME pin, however, I didn't see any signal changes on the MCU_ACTIVE and FRAME_RATE pins. Is that something to be concerned about? Is it related to my noise problem?? I am using a Nucleo H7a3 (with a custom PCB attached) and mapping the TouchGFX performance pins to PD12-PD15. PD12 and PD13 show signals, PD14 and PD15 stay at GND. I didn't see any conflicts with those pins in the Nucleo H7a3 spec.
The DCLK spec for the LCD is listed as: 23-27MHz (25MHz typ.) and I am running at 24MHz.
We're going to spin a new PCB within the next month, with a different 40 pin FFC connector for the LCD, so I'll see how things look at that point. We only have one prototype to test with currently.
2025-05-21 12:28 AM
MCU active relies on an RTOS to provide hooks when swapping in and out the idle task. Since you're not running an RTOS, you will not be able to measure that, but render time will give an indication of how busy the system is. Of course you won't know if you're waiting for CPU or memory.
The frame rate pin toggles every time a new frame is actually rendered to the screen, so unless you change graphics on the screen or invalidate manually as discussed earlier, you will not see any activity on that pin. It is basically a combination of VSYNC and render time - it toggles on VSYNC if a frame buffer update was completed (swapped in the case double buffer) before then.
I do suspect you have some interference or something going on with your LTDC connection, but it is a bit weird that it shows up for the yellow circle, but not the green and red ones. The white circle is also fine, and the lines are totally contained within the yellow. It looks a bit to me like the green circle has some "texture" to it, is that the case or is it just the picture?
2025-05-21 10:27 AM - edited 2025-05-21 10:58 AM
Thanks! Good info!!
The green circle looks okay. I think the original picture I posted is showing some noise that's not there when viewed in-real-life.
Here is another pic, showing a scrollwheel object with one white 'selected' container, on top row #1, and several gray 'not-selected' containers #2-#9. The noise is visible on the gray containers in this pic. If I adjust the gray color in the container by making it a bit darker or lighter then the noise can be eliminated. Just another example of the noise I'm seeing.
We're ordering new PCB's now, with a different connector for the LCD, and planning to assemble more than one prototype on this run, so hopefully we'll be able to clear it up. I'll post what I find.