Skip to main content
Associate
January 20, 2024
Solved

Unable to integrate TouchGFX to Parallel 8080 mode with SSD1963 display

  • January 20, 2024
  • 2 replies
  • 2511 views

Hi all,

Below is my hardware configuration,

MCU: STM32H733VGT
Display Controller: SSD1963
Winstar Display: WF70QTIBGDBT0
Display size: 7.0” TFT
Interface mode: Parallel 8080
16-pin data and 4-pin control
16BPP mode = 5R 6G 5B
Resolution: 800x480
NOTE: not using I-Cache, D-Cache, DMA, DMA2D, LTDC and FMC

I have taken the refrance from below,

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

https://community.st.com/t5/stm32-mcus-touch-gfx-and-gui/how-to-configurate-my-custom-project-with-touchgfx-engine-and/td-p/282889

 

Issue is i am not able to see the framebuffer on a screen. (i have atteched the screenshot)

However i have tested the driver call before starting the touchGFX process, and seems SSD1963_Init(), LCD_Rect_Fill(), SSD1963_Set_Work_Area() and SSD1963_FillBlockFrameBuffer() works fine.

Framebuffer placement:

Buffer size = 800 * 480 * 2 (bytes = 16 bits = 5R+6G+5B) = 7,68,000 = 750kb

LOCATION_PRAGMA_NOLOAD("TouchGFX_Framebuffer")

uint32_t frameBuf[(800 * 480 * 2 + 3) / 4] LOCATION_ATTRIBUTE_NOLOAD("TouchGFX_Framebuffer");

 

STM32H733VGTX_FLASH.ld files contains below:

EMWIN (rx) : ORIGIN = 0x08044800, LENGTH = 750K /* part of FLASH */

 

TouchGFX_Framebuffer (NOLOAD) :

{

. = ALIGN(0x4);

KEEP (*(TouchGFX_Framebuffer TouchGFX_Framebuffer.*))

_tgfxbuf_end = .;

} >EMWIN

 

FlushFrameBuffer Implementation:

void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)

{

uint16_t* fb = HAL::lockFrameBuffer();

if (SCB->CCR & SCB_CCR_DC_Msk)

{

SCB_CleanInvalidateDCache();

}

SSD1963_Set_Work_Area(rect.x, rect.y, rect.width, rect.height);

SSD1963_FillBlockFrameBuffer(fb, rect.width, rect.height);

HAL::unlockFrameBuffer();

}

 

Can anyone help me on this?

I have atteched the code for refrance.

Thank you.

This topic has been closed for replies.
Best answer by JTP1

Hello

Basically, you cannot set framebuffer to the flash (code) section. Or at least it is not very practical because you should erase it before every new frame.

It seems that STM32H733VGT contains only 564KB ram, so must use partial frame buffer. (Unless you have some external RAM memory for framebuffer.)

https://support.touchgfx.com/docs/development/scenarios/lowering-memory-usage-with-partial-framebuffer

Hope this helps you forward.

Br. JTP

 

 

2 replies

JTP1Best answer
Graduate II
January 20, 2024

Hello

Basically, you cannot set framebuffer to the flash (code) section. Or at least it is not very practical because you should erase it before every new frame.

It seems that STM32H733VGT contains only 564KB ram, so must use partial frame buffer. (Unless you have some external RAM memory for framebuffer.)

https://support.touchgfx.com/docs/development/scenarios/lowering-memory-usage-with-partial-framebuffer

Hope this helps you forward.

Br. JTP

 

 

MM..1
Chief III
January 21, 2024

and more more effective is FMC memmapped partial mode... some info

Solved: Can the STM32H743's FMC drive a 16-bit 8080 bus fa... - STMicroelectronics Community