SSD1963 Tearing effect

Hello everybody,

I own the pic32mx7mmb and got lvgl working good (not perfect :sunglasses:) with the dual partial buffers and DMA.

Since its video chip (SSD1963) provides a tearing effect signal (TE pin 50) and enough video memory for at least 2 screens, what is the proper way to syncronize lvgl updates to TE? And if possible, draw to offscreen memory and switch between buffers during TE?

Thank you.

1 Like


To synchronize on TE you need to wait for it in your disp_flush function. However if you don’t have a screen sized display buffer then LittlevGL will refresh the screen in multiple parts and you might see as the parts are drawn. As your MCU doesn’t have enough memory to buffer the whole screen you can:

  1. Create 2 pcs ~1/5 screen sized display buffer.
  2. When the first chunk is sent to the display wait for the TE signal in disp_flush (only now, not for the upcoming chunks)
  3. Start sending the 1/5 display with DMA. Meanwhile LittlevGL will render to the other buffer.
  4. Send the other chunks too with DMA
  5. Hope that the drawing will be faster then the screen refresh :slight_smile:

To draw to the memory of the SSD1963 you need to force LittlevGL to always refresh the whole screen. This way you will also get the screen in chunks but even is you press only a button the whole screen will be refreshed and you can store it in the inactive part of the SSD1963’s memory. When the last part is sent you can command the SSD1963 to change the base address.
To force LittlevGL to refresh the whole screen you should set the rounder_cb in your driver.