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
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.
