adafruit / circuitpython

CircuitPython - a Python implementation for teaching coding with microcontrollers
https://circuitpython.org
Other
4.07k stars 1.2k forks source link

Add display driver for RGB dot clock displays on ESP32-S3 port #6049

Closed kmatch98 closed 1 year ago

kmatch98 commented 2 years ago

The ESP32-S3 has a built-in LCD controller, including the ability to drive parallel (8080) and dot-clock driven displays. If CircuitPython can directly drive RGB displays, it may allow the use of lower-cost displays. I'm interested to understand whether using CircuitPython to drive RGB displays is feasible or if there are issues that make it not worthwhile.

I verified the Espressif RGB LCD demo is working on the N8R8 version of the Espressif development board.

I'm interested to explore whether this is a useful addition to CircuitPython but would appreciate guidance on what is required to connect it into CircuitPython.

Here's the first of many questions:

  1. The IDF has some high level constructs for connecting the display. Should these be used, or will I need to burrow down closer to the hardware to make the links to CircuitPython.
  2. Currently, the displayio makes a framebuffer, and the "bus" is just a pipe for shoving data down. In contrast, with the RGB LCD driver, it defines its own display buffer. Do I need a separate displayio framebuffer and a separate LCD framebuffer, or can these be the same? However, displayio also has the option to turn refresh OFF. To keep that functionality, that will require separate displayio and LCD frame buffers. Perhaps the "bus" for RGB-LCD is a function that copies the displayio framebuffer into the LCD framebuffer with any conversion required for RGB565.
  3. The framebuffer will likely reside in PSRAM. I see some mention that the LCD peripheral can use DMA to access the PSRAM without requiring clock cycles. However, if the LCD peripheral is always heavy DMA-ing the PSRAM, will that excessively slow down the processor cycles that need to access PSRAM?

All suggestions are welcome, including direction whether this is useful or riddled with problems.

Syrinx98 commented 1 year ago

Thank you for the clues, your help is fundamental since i'm new to this and i'm trying to figure out what is the correct direction to take, i'll keep digging. Much appreciated!

kmatch98 commented 1 year ago

Closed by https://github.com/adafruit/circuitpython/pull/8351