Get LVGL Display complete Buffer

Hi all,

I am working on NXP based IMXRT1064 MCU board.

In the Flush time (Inside lv_refr_vdb_flush() API) how can I get the complete display UI buffer using LVGL code?

Regards,
Prashanth Kumar K

Hi,

Anybody please reply…

Hi,

Kindly reply for above query.

Regards,
Prashanth Kumar K

I assume you want to create a file from the display image?

I’ve used this blog post to take snapshots of current screen and write the VDB contents to a file on flash…

The article is written for LVGL 6, but the same principles still apply.

Hi Fvanroie,

I am not using VDB support in LVGL code. Instead using Double LVGL Display buffer to refresh the UI.

I have got the display refreshing API as below from ‘littlevgl_support.c’ file,

/*Used to copy the buffer's content to the display*/
disp_drv.flush_cb = DEMO_FlushDisplay;

static void DEMO_FlushDisplay(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
{
DCACHE_CleanInvalidateByRange((uint32_t)color_p, DEMO_FB_SIZE);

ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)color_p);

s_framePending = true;

#if defined(FSL_RTOS_FREE_RTOS)
if (xSemaphoreTake(s_frameSema, portMAX_DELAY) == pdTRUE)
{
/* IMPORTANT!!!
* Inform the graphics library that you are ready with the flushing*/
lv_disp_flush_ready(disp_drv);

}
else
{
    PRINTF("Display flush failed\r\n");
    assert(0);
}

#else
while (s_framePending)
{
}

/* IMPORTANT!!!
 * Inform the graphics library that you are ready with the flushing*/
lv_disp_flush_ready(disp_drv);

#endif
}

So, using above how to get full Display buffer and alter the content of UI using it?

Regards,
Prashanth Kumar K

As far as I understand

ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)color_p);

just tells to eLCDif-module address of frame bufer which should be driven to LCD. In your case - color_p. Also, this function waits until data is sent.