2024-01-20 05:08 AM
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.
Solved! Go to Solution.
2024-01-20 05:45 AM
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.)
Hope this helps you forward.
Br. JTP
2024-01-20 05:45 AM
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.)
Hope this helps you forward.
Br. JTP
2024-01-21 12:16 AM
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