2024-04-04 08:36 AM
Hello,
we are using Riverdi displays but this may be a generic problem. We are using RVT70HSSNWN00 and RVT101HVSNWN00 and there is an intermittent problem.
We used project generated from the TouchGFX example to develop a graphical application. Sometimes after the display is started, there are artifacts (picture tearing) shown when the display is redrawing. Only thing that fixes this is device reset. It occurs approximately every 40-50th device startup. I am attaching a video showing the problem and how it should look correctly. In the video, I am controlling the display from a joystick, first the top right button is pressed and then the screen is changed (the exact steps are irrelevant, every redraw causes picture tearing).
I also attach .ioc file used for the project.
I have seen this document and from that it seems that this may be from Cortex-M7 speculative accesses, so I tried to set MPU regions accordingly but with no help. I think that some double buffer misconfiguration could be causing this but it seems to me that in that case it would happen always, not every few tens of resets, no?
Any input on how to fix this would be appreciated.
TouchGFX version: 4.23.0
Example project 3.1.1 for 7” display, 3.1.0 for 10.1” one (latest available version from the designer)
STM32CubeIDE: version 1.15.0 with gcc 12 (version 1.14.0 with gcc 10 had the same problem)
Solved! Go to Solution.
2024-05-15 04:16 AM - edited 2024-05-15 04:17 AM
Hello @Osman SOYKURT,
it turned out that the problem wasn't gone yet, it still sometimes happened. Fortunately now we think we finally fixed it, there was a wrong order of initialization – in main, MX_FMC_Init() must be called before MX_DSIHOST_DSI_Init().
When LTDC error interrupt is enabled, during initialization after every start, LTDC error handler is called and Transfer Error flag is set. When the black screen problem happens, error interrupt is called second time in FMC initialization and LTDC FIFO underrun flag is set. After the reorder neither happens.
Regards,
2024-04-09 06:21 AM
2024-04-13 02:41 AM
Thanks, I have tried setting MPU so that buffers (in the external memory) are not cached (it is in the .ioc I posted), not sure if I have done it correctly, but with no help. Riverdi suggested updating to current TouchGFX and project template and decreasing FMC clock by 10 MHz. I am working on that and I will report the result.
BTW this thread also seems relevant but there is no solution.
2024-04-26 04:26 AM
Hello @heveskar ,
What's the status of your project? Did you succeed in resolving it with Riverdi's suggestions?
2024-04-29 02:06 AM - edited 2024-04-29 03:10 AM
Hello @Osman SOYKURT ,
Not using DCache in the application did not help. Updating to newer template and decreasing FMC clock also did not help. We tried removing the assets from external flash so that QSPI is not used (as per another Riverdi suggestion) which did not help.
However, do not know exactly when, but the problem with flickering suddenly changed: sometimes the display did not show anything at all (just black screen) even though application and all the tasks are running normally. The original problem with flickering had disappeared.
Today I tried not using DCache in our bootloader we are using (everytime before the application was started, bootloader enabled DCache and ICache only to disable it again before jumping to application). This seems to have solved this issue with black screen.
P.S. we also disabled access to unused FMC regions as per this thread just to be on a safe side
Please leave me a few days to confirm that the issue is really gone, then I will close this thread.
Thanks
2024-05-15 04:16 AM - edited 2024-05-15 04:17 AM
Hello @Osman SOYKURT,
it turned out that the problem wasn't gone yet, it still sometimes happened. Fortunately now we think we finally fixed it, there was a wrong order of initialization – in main, MX_FMC_Init() must be called before MX_DSIHOST_DSI_Init().
When LTDC error interrupt is enabled, during initialization after every start, LTDC error handler is called and Transfer Error flag is set. When the black screen problem happens, error interrupt is called second time in FMC initialization and LTDC FIFO underrun flag is set. After the reorder neither happens.
Regards,
2024-09-05 05:13 AM
Thank you, brother