2021-01-09 13:17:15 +00:00
|
|
|
# Display and touchpad drivers for ESP32 using LVGL
|
2021-01-05 04:52:33 +00:00
|
|
|
|
2021-01-09 13:17:15 +00:00
|
|
|
For a ready to use ESP32 project take look at the [lv_port_esp32](https://github.com/lvgl/lv_port_esp32) repository.
|
2021-01-06 17:14:00 +00:00
|
|
|
|
2021-01-09 13:17:15 +00:00
|
|
|
#### Table of content
|
|
|
|
- [Supported display controllers](#supported-display-controllers)
|
|
|
|
- [Supported indev controllers](#supported-indev-controllers)
|
|
|
|
- [Support for predefined development kits](#support-for-predefined-development-kits)
|
2021-07-08 09:04:07 +00:00
|
|
|
- [Thread-safe I2C with I2C Manager](#thread-safe-i2c-with-i2c-manager)
|
2021-08-04 07:38:05 +00:00
|
|
|
- [Backlight control](#backlight-control)
|
2021-01-06 17:17:06 +00:00
|
|
|
|
2021-01-09 13:17:15 +00:00
|
|
|
**NOTE:** You need to set the display horizontal and vertical size, color depth and
|
|
|
|
swap of RGB565 color on the LVGL configuration menuconfig (it's not handled automatically).
|
2021-01-06 17:17:06 +00:00
|
|
|
|
|
|
|
|
2021-01-09 13:17:15 +00:00
|
|
|
## Supported display controllers
|
2021-01-06 17:14:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
| Display Controller | Type | Interface | Color depth (LV_COLOR_DEPTH) | Swap RGB565 color (LV_COLOR_16_SWAP) |
|
|
|
|
|---------------------------------------------|------------|------------------------|------------------------------|----------------------------------------|
|
|
|
|
| ILI9341 | TFT | SPI | 16: RGB565 | Yes |
|
2021-04-29 07:55:22 +00:00
|
|
|
| ILI9163C | TFT | SPI | 16: RGB565 | Yes |
|
2021-01-06 17:14:00 +00:00
|
|
|
| ILI9486 | TFT | SPI | 16: RGB565 | Yes |
|
|
|
|
| ILI9488 | TFT | SPI | 16: RGB565 | No |
|
|
|
|
| HX8357B/HX8357D | TFT | SPI | 16: RGB565 | Yes |
|
|
|
|
| ST7789 | TFT | SPI | 16: RGB565 | Yes |
|
|
|
|
| ST7735S | TFT | SPI | 16: RGB565 | Yes |
|
2022-01-17 19:17:19 +00:00
|
|
|
| ILI9225 | TFT | SPI | 16: RGB565 | Yes |
|
2021-01-06 17:14:00 +00:00
|
|
|
| FT81x | TFT | Single, Dual, Quad SPI | 16: RGB565 | No |
|
|
|
|
| GC9A01 | TFT | SPI | 16: RGB565 | Yes |
|
|
|
|
| RA8875 | TFT | SPI | 16: RGB565 | Yes |
|
|
|
|
| SH1107 | Monochrome | SPI | 1: 1byte per pixel | No |
|
|
|
|
| SSD1306 | Monochrome | I2C | 1: 1byte per pixel | No |
|
2021-11-18 07:58:04 +00:00
|
|
|
| PCD8544 | Monochrome | SPI | 1: 1byte per pixel | No |
|
2021-01-06 17:14:00 +00:00
|
|
|
| IL3820 | e-Paper | SPI | 1: 1byte per pixel | No |
|
|
|
|
| UC8151D/ GoodDisplay GDEW0154M10 DES | e-Paper | SPI | 1: 1byte per pixel | No |
|
|
|
|
| FitiPower JD79653A/ GoodDisplay GDEW0154M09 | e-Paper | SPI | 1: 1byte per pixel | No |
|
2021-01-05 04:52:33 +00:00
|
|
|
|
2021-01-09 13:17:15 +00:00
|
|
|
## Supported indev controllers
|
2021-01-05 04:52:33 +00:00
|
|
|
|
|
|
|
- XPT2046
|
2021-07-08 09:04:07 +00:00
|
|
|
- FT3236, FT6X36
|
|
|
|
- FT6206 controllers should work as well (not tested)
|
2021-01-05 04:52:33 +00:00
|
|
|
- STMPE610
|
|
|
|
- FT81x (Single, Dual, and Quad SPI)
|
|
|
|
|
|
|
|
If your display or input device (touch) controller is not supported consider contributing to this repo by
|
|
|
|
adding support to it! [Contribute controller support](CONTRIBUTE_CONTROLLER_SUPPORT.md)
|
|
|
|
|
2021-01-09 13:17:15 +00:00
|
|
|
## Support for predefined development kits
|
2021-01-05 04:52:33 +00:00
|
|
|
|
2021-01-06 17:14:00 +00:00
|
|
|
You can also use the predefined kits, which selects the correct display controllers on the kit,
|
|
|
|
and sets the gpio numbers for the interface.
|
|
|
|
|
|
|
|
| Kit name | Display controller | Interface | Hor. Res. | Ver. Res. |
|
|
|
|
|---------------------------|-----------------------|-----------|-----------|-----------|
|
|
|
|
| ESP Wrover Kit v4.1 | ILI9341 | SPI | 240 | 320 |
|
|
|
|
| M5Stack | ILI9341 | SPI | 240 | 320 |
|
2021-07-08 09:04:07 +00:00
|
|
|
| M5Stack Core2 | ILI9341 | SPI | 240 | 320 |
|
2021-01-06 17:14:00 +00:00
|
|
|
| M5Stick | SH1107 | SPI | - | - |
|
|
|
|
| M5StickC | ST7735S | SPI | 80 | 160 |
|
|
|
|
| Adafruit 3.5 Featherwing | HX8357 | SPI | 480 | 320 |
|
|
|
|
| RPi MPI3501 | ILI9486 | SPI | - | - |
|
|
|
|
| Wemos Lolin OLED | SSD1306 | SPI | 64 | 128 |
|
|
|
|
| ER-TFT035-6 | ILI9488 | SPI | 480 | 320 |
|
|
|
|
| AIRcable ATAGv3 | IL3820 | SPI | 128 | 296 |
|
|
|
|
| TTGO T-Display | ST7789 | SPI | 135 | 240 |
|
|
|
|
| TTGO Camera Plus | ST7789 | SPI | 240 | 240 |
|
2021-01-05 04:52:33 +00:00
|
|
|
|
2021-01-09 13:17:15 +00:00
|
|
|
**NOTE:** See [Supported display controllers](#supported-display-controllers) for more information on display configuration.
|
|
|
|
**NOTE:** See [Supported indev controllers](#supported-indev-controllers) for more information about indev configuration.
|
2021-07-08 09:04:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
## Thread-safe I2C with I2C Manager
|
|
|
|
|
|
|
|
LVGL can use I2C to read from a touch sensor or write to a display, possibly
|
|
|
|
many times a second. Meanwhile, other tasks may also want to read from i2c
|
|
|
|
devices on the same bus. I2C using the ESP-IDF is not thread-safe.
|
|
|
|
|
|
|
|
I2C Manager (`i2c_manager`) is a component that will let code in multiple threads
|
|
|
|
talk to devices on the I2C ports without getting in each other's way. These drivers
|
|
|
|
use a built-in copy of I2C Manager to talk to the I2C port, but you can also use
|
|
|
|
the I2C Manager component itself and have others play nice with LVGL and vice-versa.
|
|
|
|
[Click here](i2c_manager/README.md) for details.
|
2021-08-04 07:38:05 +00:00
|
|
|
|
|
|
|
|
|
|
|
## Backlight control
|
|
|
|
|
|
|
|
Control of LCD's backlight is provided by separate module that is independent from the display driver.
|
|
|
|
Configuration of the backlight controller can be found in menuconfig `LVGL ESP Drivers -> LVGL TFT Display controller`.
|
|
|
|
|
|
|
|
There are three modes of operation:
|
|
|
|
1. Off - No backlight control
|
|
|
|
2. Switch - Allows ON/OFF control
|
|
|
|
3. PWM - Allows brightness control (by Pulse-Width-Modulated signal)
|