lcd works with 16 bit fmc interface.
if i use my functions that sets pixel adr and draws pixels - all works fine.
also i can fill proper rectangle with my api and driver.
and lvgl works fine with default objects, but then when something needs to change (button has toggled state for example) - comes this glitch.
now i am on the way to implement spi st7735 - i will try to get different result by spi to figure - what is causing this glitch.
if spi lcd will work fine, i dont know even where to search.
here is some code
Got problem solved - the problem was with “set adress window”
window is x,y, w,h
and lvgl got area coordinates and not wide and height, lcd registers have x0, y0,.wide,height
prototype : inline void LCD_SetAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
actual call: LCD_SetAddrWindow(area->x1, area->y1, area->x2-area->x1, area->y2-area->y1);
instead of : LCD_SetAddrWindow(area->x1, area->y1,area->x2, area->y2);
The problem to get this bug is that first time lcd got filled with proper image.
so when lvgl fills lcd first time - it works with all height and width.
Then, tft_flush called only for a small object that is changed, here ive got my error.
I hope you weren’t running lv_task_handler in an interrupt handler! I’m pretty sure this won’t work unless you disable interrupts whenever you call an LVGL API besides lv_task_handler.