-
Notifications
You must be signed in to change notification settings - Fork 59
Description
Dear Rudolph,
I was able to make Arduino PlatformIO example to work on my test bed composed of ESP32 MCU and a Riverdi EVE3 7" display.
I would like to use LVGL (either v7 or v8) with your library. I'm aware of the LVGL ESP32 project, however it is for ESP-IDF and, despite being a derivative of your work, has significant differences which I try to overcome but failed.
I understand that LVGL just need a callback function to draw regions of bitmap from a SRAM buffer
The LVGL ESP32 project achieves this through the functions FT81x_flush
and TFT_WriteBitmap
below (https://github.com/lvgl/lvgl_esp32_drivers/blob/master/lvgl_tft/FT81x.c).
The latter uses a function, EVE_memWrite_buffer
, for which the closest function in your library is EVE_memWrite_sram_buffer
. However it misses the flag that sends DISP_SPI_SIGNAL_FLUSH to the SPI transaction. The low level function to write to SPI bus (disp_spi_transaction
) is very different from spi_transfer
, I guess due to being ESP-IDF based.
Could you please pointing me to some clues to get it working?
I would be happy to test a prototype function. I guess I can get the screen initialization working.
Thank you,
Nick
void TFT_WriteBitmap(uint8_t* Bitmap, uint16_t X, uint16_t Y, uint16_t Width, uint16_t Height)
{
// calc base address
uint32_t addr = SCREEN_BITMAP_ADDR + (Y * BYTES_PER_LINE) + (X * BYTES_PER_PIXEL);
// can we do a fast full width block transfer?
if(X == 0 && Width == EVE_HSIZE)
{
EVE_memWrite_buffer(addr, Bitmap, (Height * BYTES_PER_LINE), true);
}
else
{
// line by line mode
uint32_t bpl = Width * BYTES_PER_PIXEL;
for (uint16_t i = 0; i < Height; i++)
{
EVE_memWrite_buffer(addr, Bitmap + (i * bpl), bpl, (i == Height - 1));
addr += BYTES_PER_LINE;
}
}
}
// LittlevGL flush callback
void FT81x_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map)
{
TFT_WriteBitmap((uint8_t*)color_map, area->x1, area->y1, lv_area_get_width(area), lv_area_get_height(area));
}