cancel
Showing results for 
Search instead for 
Did you mean: 

Unable to integrate TouchGFX to Parallel 8080 mode with SSD1963 display

DJosh.17
Associate

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.

1 ACCEPTED SOLUTION

Accepted Solutions
JTP1
Lead

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

 

 

View solution in original post

2 REPLIES 2
JTP1
Lead

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

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