Author Topic: ESP32-S3 LCD Interface??.........  (Read 2632 times)

0 Members and 1 Guest are viewing this topic.

Offline SmokeyTopic starter

  • Super Contributor
  • ***
  • Posts: 2597
  • Country: us
  • Not An Expert
ESP32-S3 LCD Interface??.........
« on: October 06, 2023, 05:38:20 am »
It looks like the ESP32-S3 has a built in LCD interface that supports "8-bit ~16-bit parallel RGB, I8080, and MOTO6800 interfaces". 

Module Datasheet = https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf
Chip Datasheet = https://www.espressif.com/sites/default/files/documentation/esp32-s3_datasheet_en.pdf
Tech Reference Manual = https://www.espressif.com/sites/default/files/documentation/esp32-s3_technical_reference_manual_en.pdf
Hardware Design Guide = https://www.espressif.com/sites/default/files/documentation/esp32-s3_hardware_design_guidelines_en.pdf

That interface, coupled with the PSRAM up to 8MB for a frame buffer, sounds like it would make an interesting LCD display driver up to decent sizes for a seriously low price compared to alternatives.

I'm looking to give this a shot, but I have two concerns due to the minimal information out there:
1) Software/lib support.
2) Hardware pinout and configuration.

I feel like the main reason to use these parts like ESP32 is typically due to the community projects as examples, but I'm having a hard time finding anyone that is using the LCD controller on these things now.  If the only software support is for SPI displays that doesn't efficiently use the PSRAM for a framebuffer, then it's not worth playing with this now and I'll use a SSD1963 or something instead.

I've also been bit by the hardware IO multiplexer pin mapping/configuration on an earlier ESP32.  Having a multiplexer is great and all, but there are some important exceptions that I feel like aren't' clearly enough noted.  Input only digital pins (should have seen that in the table, my bad)... Unusable ADC channel when Wifi is enabled (why?)... Power up glitches only only some pins(fun!) ... etc...

So the question of the day...
Has anyone used the ESP32-S3 LCD controller to directly drive an RGB lcd, and even better be able to point me to a working schematic example with the connections between the thing and an actual display, and even better-er with a working software repo?
« Last Edit: October 06, 2023, 06:30:24 am by Smokey »
 

Offline SmokeyTopic starter

  • Super Contributor
  • ***
  • Posts: 2597
  • Country: us
  • Not An Expert
Re: ESP32-S3 LCD Interface??.........
« Reply #1 on: October 06, 2023, 10:20:20 pm »
Here is another thing...

Some of the libraries for open source stuff essentially hard code certain pins for whatever function they are doing. I get why they do this, because they were designed to work with some specific hardware shield, which is the only thing out there that does that function so why make changing the pinout easy to do in software if it's something no one will ever need to do because they are all using the same hardware boards?
The problem with this is that instead of just using the library or whatever, I need to fork it to make a core change to where ever the pin definitions are.  That sucks.
So if possible it make sense to just use the pins that the most popular shields use.... but I can't find any RGB shields at the moment for this particular project.
 

Offline SmokeyTopic starter

  • Super Contributor
  • ***
  • Posts: 2597
  • Country: us
  • Not An Expert
 

Offline SmokeyTopic starter

  • Super Contributor
  • ***
  • Posts: 2597
  • Country: us
  • Not An Expert
Re: ESP32-S3 LCD Interface??.........
« Reply #3 on: December 08, 2023, 09:00:39 pm »
New question.

I have an RGB LCD controller that supports both DE and SYNC modes, and it's selectable with a hardware jumper on the PCB.  That is all good, but the question becomes:

   How do you tell the esp32-s3 to operate in either DE or SYNC modes?

If you check out the example configuration linked above, there are hardware pin options for both the DE and the SYNC pins but no option for what actual mode the processor will use.

What am I missing here?  What sets the DE or SYNC modes in software?  Are both modes even supported by the esp32-s3?

 

Offline zapta

  • Super Contributor
  • ***
  • Posts: 6190
  • Country: us
Re: ESP32-S3 LCD Interface??.........
« Reply #4 on: December 09, 2023, 06:19:48 am »
LVGL is a popular open source package to implement advanced user interfaces on embbeded systems and it allows you to plug in the function that transfers portions of the frame buffer to the display. In other words, it's not SPI or I2C specific and you can plug any interface you want.

https://docs.lvgl.io/latest/en/html/overview/drawing.html#mechanism-of-screen-refreshing

I used it for example with RP2040 for fast 16 bit parallel frame buffer using the programable PIO logic. https://twitter.com/DustinWattsNL/status/1430049782379294738

 

Offline SmokeyTopic starter

  • Super Contributor
  • ***
  • Posts: 2597
  • Country: us
  • Not An Expert
Re: ESP32-S3 LCD Interface??.........
« Reply #5 on: December 09, 2023, 07:11:16 am »
The design requirements for this particular project are such that we need to use the 16Bit RGB interface (so not SPI, or I8080).  I think we are going to try to use the LovyanGFX library which has support for both the ESP32-S3 and RGB, but I'm still getting hung up on the hardware interface and hardware configuration. 

Because of the size of this particular display, I think it makes more sense to use SYNC mode than DE mode, but as I said it's not obvious how to force the ESP32 to do that.
 

Offline Fire Doger

  • Regular Contributor
  • *
  • Posts: 207
  • Country: 00
  • Stefanos
Re: ESP32-S3 LCD Interface??.........
« Reply #6 on: December 09, 2023, 04:54:23 pm »
Set de pin number to -1

As you can see in esp_lcd_panel_rgb.c there is this if inside lcd_rgb_panel_configure_gpio

Code: [Select]
    if (panel_config->de_gpio_num < 0) {
        // Hsync and Vsync are required in HV mode
        valid_gpio = valid_gpio && (panel_config->hsync_gpio_num >= 0) && (panel_config->vsync_gpio_num >= 0);
    }

You can trace it further from there to see how it is configured inside the library (component)

It worked on me both with sync and de up to 800x480 with lvgl

I have used this devboard https://www.aliexpress.com/item/1005004952694042.html
I didn't like that usb pins that can be used for jtag are used in capacitive IC
Recently I found and an other board that if I remembered correctly usb pins are free
https://www.makerfabs.com/esp32-s3-parallel-tft-with-touch-7-inch.html
« Last Edit: December 09, 2023, 05:07:27 pm by Fire Doger »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf