2025-01-13 10:06 PM - last edited on 2025-01-14 01:14 AM by Andrew Neil
Hello Everyone,
Earlier we have successfully developed a variant using STM32F746 Discovery board but now we have shifted towards our own developed PCB with custom LCD Display 800 * 480.
Our new PCB uses MT25Q128A external flash for storing images, text and font used by TouchGFX and we are using single buffer allocation in external SDRAM for framebuffer. We are using different pins for QuadSPI communication so had to develop custom external loader for this. We have tested the external loader for various images and it works fine.
When we started inputting texts in TouchGFX the system would wait infinitely in xQueueSemaphoreTake() function so we suspected something might be wrong with loading from external flash so we created another project this time stored everything in internal flash, again the result was same, the TouchGFX hangs while using texts.
After searching through the community we came across following links:
Here it is suggested to try to change the line in stm32h7xx_hal_dma2d.c, in the function, but is related to H7 series.
Same thread also suggested changing MPU Config
We had disabled MPU in our project but even after enabling it the result was unaffected.
Please guide me where I am doing wrong.
Thankyou
Regards,
Pitbull
2025-01-13 09:46 PM
Hello Everyone,
Earlier we have successfully developed a variant using STM32F746 Discovery board but now we have shifted towards our own developed PCB with custom LCD Display 800 * 480.
Our new PCB uses MT25Q128A external flash for storing images, text and font used by TouchGFX and we are using single buffer allocation in external SDRAM for framebuffer. We are using different pins for QuadSPI communication so had to develop custom external loader for this. We have tested the external loader for various images and it works fine.
When we started inputting texts in TouchGFX the system would wait infinitely in xQueueSemaphoreTake() function so we suspected something might be wrong with loading from external flash so we created another project this time stored everything in internal flash, again the result was same, the TouchGFX hangs while using texts.
After searching through the community we came across following links:
Here it is suggested to try to change the line in stm32h7xx_hal_dma2d.c, in the function, but is related to H7 series.
Same thread also suggested changing MPU Config
We had disabled MPU in our project but even after enabling it the result was unaffected.
Please guide me where I am doing wrong.
Thankyou
Regards,
Pitbull
2025-01-14 12:48 AM
Hi.
The issue about MPU in the topic you refer to is to disable prefetching outside of the QSPI range.
This is important and should be done. Normally this gives an error after running a while (could be hours).
Try moving texts and fonts to internal flash for a test. This is done in the linker script.
Also check the DMA2D for errors. One error is the configuration error. There is maybe a handler for this in the top of TouchGFXGeneratedHAL.
It can also be a DMA2D Transfer error. This comes if there is a error on the memory subsystem during the transfers.
You can check this by looking at the DMA2D registers (in the ISR register).
If you get this, you do not get the Transfer Complete interrupt, and the process stops.
Hope it helps.
2025-01-14 04:08 AM
Hii Fleming,
Already checked by moving fonts and texts in internal flash. Facing the same issue.
Will check for the DMA2D registers and update you accordingly.
Thankyou for your quick response.
Regards,
Pitbull