2024-09-13 07:36 PM
Hi
My project is using an alientek 4.3 inch TFTLCD screen, which is driven by FMC (Flexible Memory Controller).
And ,The display effect of the button control does not meet my expectations after I load it.“next text”is my button,
that there are many horizontal dots or speckles inside。
thank you
2024-09-16 03:36 AM
Hello @zhaowhong and welcome to the community!
It is usually quite hard to help people on hardware related issue.
Can you give me more information about your problem.
When does it occurs?
What happens if you move the button to another location?
What happens if you do not add the text? Do you still get the dots? The lines?
Are you using a flexButton or a button + a TextArea?
Regards,
2024-09-16 04:28 AM
+What STM32 product you are using?
2024-09-17 03:25 AM
Hello @zhaowhong ,
Did you change the orientation of your screen in TouchGFX? Have you applied layout rotation on your image?
2024-09-17 05:48 PM
thank you
"I have not added any image."Is this related to not adding anything?" I found if I select
The display effect is well.
2024-09-17 05:48 PM
stm32F767
2024-09-17 11:14 PM
It's hard to tell with limited information but i've had a very similar issue in the past.
It was caused by not moving/placing image assets in the external FMC flash during the flashing process. I had to write a "custom loader" to interface & place the images in external flash.
Another issue similar to this was memory bandwidth problems. I "clocked" the FMC memories to slow which resulted in a similar looking graphic glitch.
2024-09-17 11:17 PM - edited 2024-09-17 11:22 PM
Try to configure the LCD memory region as Strongly-Ordered or Device using MPU. Or simply disable the cache an see what happens. It could be something related to cache coherency issue.
2024-09-18 02:13 AM - edited 2024-09-18 02:14 AM
It could be also due to the speculative behavior of the cortex M7:
https://community.st.com/t5/stm32-mcus-products/m7-speculative-access-vs-cache/td-p/131916
In that case need to disable all the unused memory regions using MPU.
You can for example start by setting a Background MPU config to disable mainly all regions except the internal memory regions, then enable the necessary external memories one by one.
Example, refer to and see the MPU config: https://github.com/STMicroelectronics/STM32CubeF7/blob/master/Projects/STM32F769I_EVAL/Applications/Audio/Audio_playback_and_record/Src/main.c
This part is the MPU background config, then subsequent configs (not shown below) are to enable the necessary memory regions.
/* Configure the MPU as Strongly ordered for not defined regions */
MPU_InitStruct.Enable = MPU_REGION_ENABLE;
MPU_InitStruct.BaseAddress = 0x00;
MPU_InitStruct.Size = MPU_REGION_SIZE_4GB;
MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS;
MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;
MPU_InitStruct.Number = MPU_REGION_NUMBER0;
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
MPU_InitStruct.SubRegionDisable = 0x87;
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;
2024-09-30 07:32 AM
Hello @zhaowhong ,
Were you able to move forward on your issue?
Regards,