ESP32-8048S070 LVGL interface software

Dear,
I have bought a ESP32-8048S070 display. It includes an ESP32-S3 processor that interfaces to the display without any display driver chip i.e. the ESP32-S3 also does the job of a display driver chip and controls the RGB lines, hsync and vsync lines and manages the display storage that is within the ESP32-S3.
I have looked for software that uses LVGL on the ESP-32-8048S070 display. There are examples on the internet, but all I have found use the Arduino IDE. I would like to stay with the Espressif IDE, hence I am looking for software written in C, preferably, to interface the LVGL to the display.
Please, inform me in case you are aware of such software.
Thanks in advance
Jorgen

1 Like

@JorgenSandberg

I googled this for you and found:

Is that what you are after?
Thanks

1 Like

Dear elgerg,
Thanks a lot. It is what I have been looking for.

Regards,
Jorgen

This is bit old, but I’m working on same display and I got picture, but I have problem that picture is shifted to right a little bit. And when I initialize wifi, during initialization it moves even more right.

I had similar problems with smaller ESP32S3-4827S043 display and there it was fixed by setting pixel clock to what display recommended (9MHz when I had 12MHz originally.)

With this bigger display that doesn’t help. I’ve tested several pixel clocks, but picture always shifts and screen just flickers more or less. The screen still works fine, but picture is shifted to right and it wraps to left. This might be more of a ESP32 specific question, but has anyone else had similar problem and how they sorted them out? Or is there way to reset the screen position?

1 Like

Hi ttk, you can solve this problem ? I have the same problem in ESP32-8048s070C

Hi,
I wasn’t able to get it working properly on that 8048S070 display and I’ve been using smaller display instead.

And now I was. I found this GitHub - limpens/esp32-8048S043: Demo for the ESP32-8048S043 Sunton kit with esp-idf and lvgl and was able to use that with my display. I just had to change the pinout and sync pulse settings and I got stable picture now. So depending your screen it might work or not as is. I’ll put my settings at the end that I changed.

The wrapping though… it’s still there. I have setup where I have factory partition and two ota - partitions. Sometimes just updating software via ota is enough to make it start picture shifted. No matter if you restart after that it’ll be like that until you update next time and hope this time it works. I haven’t been able to figure out why is that (must be something esp32 related) and how to reset the picture. I think it’s something about timing in flash/psram since they use SPI and system for some reason can’t resync the picture one it’s missalligned. That’s my guess and just a guess.

And the changed settings. Here is the timing:
.hsync_pulse_width = 30,
.hsync_back_porch = 16,
.hsync_front_porch = 210,
.vsync_pulse_width = 13,
.vsync_back_porch = 10,
.vsync_front_porch = 22,

And the pinout:
#define LCD_PIN_HSYNC (gpio_num_t) GPIO_NUM_39 // HSYNC
#define LCD_PIN_VSYNC (gpio_num_t) GPIO_NUM_40 // VSYNC
#define LCD_PIN_DE (gpio_num_t) GPIO_NUM_41 // DE
#define LCD_PIN_PCLK (gpio_num_t) GPIO_NUM_42 // DCLK

#define LCD_PIN_DATA0 (gpio_num_t) GPIO_NUM_15 // B0
#define LCD_PIN_DATA1 (gpio_num_t) GPIO_NUM_7 // B1
#define LCD_PIN_DATA2 (gpio_num_t) GPIO_NUM_6 // B2
#define LCD_PIN_DATA3 (gpio_num_t) GPIO_NUM_5 // B3
#define LCD_PIN_DATA4 (gpio_num_t) GPIO_NUM_4 // B4
#define LCD_PIN_DATA5 (gpio_num_t) GPIO_NUM_9 // G0
#define LCD_PIN_DATA6 (gpio_num_t) GPIO_NUM_46 // G1
#define LCD_PIN_DATA7 (gpio_num_t) GPIO_NUM_3 // G2
#define LCD_PIN_DATA8 (gpio_num_t) GPIO_NUM_8 // G3
#define LCD_PIN_DATA9 (gpio_num_t) GPIO_NUM_16 // G4
#define LCD_PIN_DATA10 (gpio_num_t) GPIO_NUM_1 // G5
#define LCD_PIN_DATA11 (gpio_num_t) GPIO_NUM_14 // R0
#define LCD_PIN_DATA12 (gpio_num_t) GPIO_NUM_21 // R1
#define LCD_PIN_DATA13 (gpio_num_t) GPIO_NUM_47 // R2
#define LCD_PIN_DATA14 (gpio_num_t) GPIO_NUM_48 // R3
#define LCD_PIN_DATA15 (gpio_num_t) GPIO_NUM_45 // R4

Rest were same. There is also re-mapping of touch coordinates but I found out that I don’t need it with my touch.

I was also able to fix the wrapping problem. There are couple settings in menuconfig that fixes it.

In Component Config → LCD and Touch panel → LCD peripheral configuration
Check both RGB LCD ISR IRAM - safe and Restart transmission in VSYNC

I think latter is the one that actually fixes the problem, but in my program I also write on flash (NVS) in normal operation so I did checked the second one as well.

After those changes I haven’t had any wrapping problem anymore.