cancel
Showing results for 
Search instead for 
Did you mean: 

Hello everyone. I want to use my 7inch LCD screen with TouchGFX using STM32F429 processor. My LCD screen has SSD1963 drive and has FT5426 touch. I can show normal images on my screen. But I didn't manage to integrate it with TouchGFX. Please help me.

MKoca.1
Senior
 
39 REPLIES 39
MKoca.1
Senior

I should also mention that my code doesn't fall into the functions screenViewBase :: screenViewBase () and screenView :: screenView (). Can you explain how to access these functions with interrupt? @Flemming Gram CHRISTENSEN​  @Martin KJELDSEN​ 0693W000006G8N4QAK.jpg0693W000006G8MfQAK.jpg0693W000006G8MVQA0.jpg 

I could access these functions in my works with the STM32F429's LTDC screen. But as there is a problem with my FMC configurations, I cannot access these functions via interrupt.

If you're not getting touchgfx_signalVsync() called, then TouchGFX isn't running and nothing will happen on screen. Check out the F412 AT for inspiration on FMC config..

But it's more likely that you need to wire an external signal from your display to call this function that drives touchgfx forward. For LTDC it's easy since it's on the MCU and can be configured to fire interrupts easily. We provide the LTDC driver for all MCUs, but for SPI/FMC/DSI we cannot - yet

You are right Martin. With a LTDC display you get a "refresh" signal from the LTDC controller. With a display on FMC you normally use an external signal from the display (an extra line going from the display to the MCU). This is asserted by the display when a refresh starts.

The standard procedure is to hook the external interrupt to this line, and then start TouchGFX drawing. I.e. calling touchgfx_signalvsync (in above pictures) from the interrupthandler.

Thanks.

MKoca.1
Senior

Hello, Mr. @Martin KJELDSEN​  and Mr. @Flemming Gram CHRISTENSEN​ . Finally, I was able to get the TouchGFX images and touch to my FMC screen. And I was able to design an average interface. Now I want to use ChromART.

 https://support.touchgfx.com/docs/development/touchgfx-hal-development/scenarios/scenarios-fmc

I'm trying to follow the method here, but I don't fully understand it.

prepare ();

xSemaphoreTake

xSemaphoreGive

I do not understand what these functions do. Also, I do not use FreeRTOS. Do I have to use FreeRTOS to use ChromART?

Hello.

Nice to hear, that you are progressing.

Are you using ChromART to clock out data on your bus? Or maybe you are using just the CPU (one or two for-loops) or a normal DMA.

If you are using ChromART to clock out data, you need to wait for ChromART to finish drawing in the framebuffer. This is done e.g. by calling:

  dma.flush();

The code in the article you refer to is to wait for the DMA2D to Screen transfer to finish. You can also do that by busy waiting on the DMA2D. This depends on how you start the DMA2D.

The problem is that the interrupt handler is shared with the TouchGFX code.

So the simplest is to busy wait on DMA2D and disable interrupts meanwhile.

Regards

MKoca.1
Senior

I enable ChromART in CubeMx while creating the project. ChromART interrupts are working properly. It appears to be enabled in the code snippet in the picture. But I can't tell if it's working or not. Do I have to do something extra? I cannot understand this as I cannot display the CPU working percentage on the screen.

MKoca.1
Senior

0693W000006HXbIQAW.jpg 

I enable ChromART in CubeMx while creating the project. ChromART interrupts are working properly. It appears to be enabled in the code snippet in the picture. But I can't tell if it's working or not. Do I have to do something extra? I cannot understand this as I cannot display the CPU working percentage on the screen.

MKoca.1
Senior

@Flemming Gram CHRISTENSEN​ 

You can check if it is being used by setting breakpoints.

E.g. in the DMA2D interrupt. If this is executed it is running.

Another good place could be in SetupDataCopy/SetupDataFill in your DMA class (STM32DMA.hpp)

The setupDataFill is called if you have a few Boxes on your screen.