Description
Has anyone been able to get the new LVGL v.9.0 to work properly with LovyanGFX? In particular the ILI9488 screen. Due to the nature of my project’s design I have to utilize LovyanGFX. Unfortunately, I can’t even get the basic display callback to work on the new v9.0.
What MCU/Processor/Board and compiler are you using?
Arduino 2.2.1 and ESP32C3
What LVGL version are you using?
9.0
What do you want to achieve?
Just get the basic callback to work without the device crashing with a stack overflow error.
What have you tried so far?
I have tried porting over the display callback from working v8.3.11 and I tried the basic display callback outlined in the getting started. Neither works.
Code to reproduce
Add a code snippet which can run in the simulator. It should contain only the relevant code that compiles without errors when separated from your main code base.
The code block(s) should be formatted like:
// Display flushing
void my_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
{
if (tft.getStartCount() == 0)
{ // Processing if not yet started
tft.startWrite();
}
tft.pushImageDMA( area->x1
, area->y1
, area->x2 - area->x1 + 1
, area->y2 - area->y1 + 1
, ( lgfx::swap565_t* )&color_p->full);
lv_disp_flush_ready( disp );
}
// the above fails
// this also fails, but it fails during compilation.
void my_disp_flush(lv_display_t * disp, const lv_area_t * area, void * px_map)
{
uint16_t * buf16 = (uint16_t)px_map; /*Let's say it's a 16 bit (RGB565) display*/
int32_t x, y;
for(y = area->y1; y <= area->y2; y++) {
for(x = area->x1; x <= area->x2; x++) {
tft.drawPixel(x, y, *buf16);
buf16++;
}
}
lv_disp_flush_ready( disp );
}