Skip to main content
Jesper Ronnholm
Associate III
January 28, 2019
Solved

Multiple displays possible?

  • January 28, 2019
  • 5 replies
  • 1659 views

Is it possible to create any kind of hack to run multiple displays on one MCU with ToughGFX?

I'm looking for a way to have one display be drawn normally, but with two smaller displays at very low frame-rates (no higher than 1Hz).

This topic has been closed for replies.
Best answer by Martin KJELDSEN

Hi Jesper,

Okay. For the parallel display you can simply use one of the existing solutions that configure the LTDC controller and then hook into the flushFrameBuffer(Rect& rect); method in your concrete HAL to transfer data to your serial display(s). It's not something i've tried before (multiple displays) but i can't see why that shouldn't work fine.

Here is a post about how to use flushFrameBuffer() with something like a serial display:

https://community.st.com/s/question/0D50X0000ADDsIiSQL/stm32f4touchgfxlcd-with-8080-parallel-interface

Best regards,

Martin

5 replies

Martin KJELDSEN
Principal III
January 28, 2019

Hi @Jesper Rönnholm​,

How are the displays connected?

Jesper Ronnholm
Associate III
January 29, 2019

We use parallel 565bpp for the main display, and a simple serial 8bpp (greyscale) protocol over the SPI bus for the two side displays. The side displays are memory mapped to 320x120px and have an update frequency of around 0,5 Hz.

We're looking to manage all three displays from TouchGFX - either in parallel app instances or on the same.

None of the three displays have a touch controller, so there's no conflict there.

Martin KJELDSEN
Martin KJELDSENBest answer
Principal III
January 29, 2019

Hi Jesper,

Okay. For the parallel display you can simply use one of the existing solutions that configure the LTDC controller and then hook into the flushFrameBuffer(Rect& rect); method in your concrete HAL to transfer data to your serial display(s). It's not something i've tried before (multiple displays) but i can't see why that shouldn't work fine.

Here is a post about how to use flushFrameBuffer() with something like a serial display:

https://community.st.com/s/question/0D50X0000ADDsIiSQL/stm32f4touchgfxlcd-with-8080-parallel-interface

Best regards,

Martin

Martin KJELDSEN
Principal III
January 29, 2019

I made a post in this thread that outlines how to transfer data to serial displays by hooking into flushFrameBuffer()

https://community.st.com/s/question/0D50X0000ADDsIiSQL/stm32f4touchgfxlcd-with-8080-parallel-interface

Jesper Ronnholm
Associate III
January 29, 2019

Thanks! We will study it closer.

It looks like we can maybe exploit the canvas by changing the application screen size after the initial code generation. Then we have one area of the canvas that will show in the original display, and one area that is only visible in the designer.

At least in terms of display compartmentalization, this would allow for keeping the canvas of all three displays in one designer project.

By manipulating the ChromART circuit when rendering outside the main display canvas, we may possibly also be able to inject the correct bitmap encoding for rendering the grayscale framebuffers (on the side displays).