This is more of a conceptual question because I’m confused about how some methods I’ve read about work in regards to updating the display. A lot of this question will be less about lvgl itself and more about general bare metal lcd display stuff.
Background info:
Using a SAME54 Xplained Pro (atsame54p20a) and the SSD1963 as the lcd controller.
First question is about dma and the displays. I guess I just don’t understand how dma can work with the driver because I have this bottleneck during the transfers:
P_LCD_DATA_PORT_GROUP->OUTSET.reg = (P_LCD_DATA_MASK & dword); P_LCD_DATA_PORT_GROUP->OUTCLR.reg = (P_LCD_DATA_MASK & ~dword); gpio_set_pin_level(P_LCD_WR, 0); delay_us(10); gpio_set_pin_level(P_LCD_WR, 1); delay_us(10);
I have to do this for every 16 bit transfer to the controller from my mcu. If I have to wait 10ns between every transfer, how could I make dma work? Or how would it speed it up?
Second part of this question has to deal with boot up. When I boot, my screen slowly draws from top to bottom and it’s a bit unpleasant to look at. Is there a way to pre-draw the screen and then have the lcd only draw the screen once I know the update is finished being sent to the controller? After the first screen is drawn, the updates are relatively quick.
Edit: I’ve learned that the datasheet actually requires 12ns, not us, of write time so removing those delays worked like a charm. Still not sure on any dma stuff though.