- Install ESP-IDF: http://esp-idf.readthedocs.io/en/latest/
- Get this projects:
git clone --recurse-submodules https://github.com/littlevgl/esp32_ili9341.git
To link LittlevGL (lvgl) and lv_examples with ESP-IDF you need to add a component.mk file to each directory.
Espressif recommends to add third party software into a directory named components, so lvgl
and lv_examples
directories are located in a directory named components.
Next to this README file you find two component.mk template files:
- lvgl_component.mk
- lv_example_component.mk
Rename lvgl_component.mk
to component.mk
and move it to the lvgl
directory, then rename lv_example_component.mk
to component.mk
and move it to the lv_examples
directory, remember lvgl
and lv_examples
directories are located into the components directory.
Some displays doesn't support the same options, for example, the ESP-Wrover-Kit doesn't have the touch controller and this is usual on other ILI9341 displays.
To configure the support for the touch controller go to components/drv/component.mk
and change the value of TOUCH_SUPPORT
. To enable the support for touch, set TOUCH_SUPPORT=1
, like so CFLAGS+=-DTOUCH_SUPPORT=1
, to disable set TOUCH_SUPPORT=0
, like so CFLAGS+=-DTOUCH_SUPPORT=0
.
Some displays turn on the backlight of the display with a logic 1, other with a logic 0, to set the correct value for your display go to components/drv/component.mk
and change the value of ILI9341_BCLK_ACTIVE_LVL
. For example, if your display turn on the backlight with a logic 0 set CFLAGS+= -DILI9341_BCKL_ACTIVE_LVL=0
, if your display turn on the backlight with a logic 1 set CFLAGS+= -DILI9341_BCKL_ACTIVE_LVL=1
.
You can change the size of your display in lv_conf.h
in LV_HOR\VER_RES_MAX
.
There are several development boards based on the ESP32 chip, make sure you assign the correct pin numbers to the signals that interface with the TFT display board, below are some examples:
This board comes with an embedded TFT screen with the ILI9341 display driver and it doesn't have touch screen. The screen size is 340 x 220 px.
Make sure the uart selected to flash is ttyUSB1, you can change it on the Serial flasher config
of make menuconfig.
For ILI9341 HSPI is used, modify the pin configuration in components/drv/disp_spi.h
to:
#define DISP_SPI_MOSI 23
#define DISP_SPI_CLK 19
#define DISP_SPI_CS 22
and components/drv/ili9341.h
to:
#define ILI9341_DC 21
#define ILI9341_RST 18
#define ILI9341_BCKL 5
This project comes with an ILI9341 display driver and an XPT2046 resistive touchpad driver. Both devices are communicating via SPI.
For ILI9341 HSPI is used, modify the pin configuration in components/drv/disp_spi.h
to:
#define DISP_SPI_MOSI 13
#define DISP_SPI_CLK 14
#define DISP_SPI_CS 5
and components/drv/ili9341.h
to:
#define ILI9341_DC 19
#define ILI9341_RST 18
#define ILI9341_BCKL 23
For XPT2046 VSPI is used, modify the pin configuration in components/drv/tp_spi.h
to:
#define TP_SPI_MOSI 32
#define TP_SPI_MISO 35
#define TP_SPI_CLK 26
#define TP_SPI_CS 33
and components/drv/xpt2046.h
to:
#define XPT2046_IRQ 25
There is another development kit with only 30 GPIOs available:
For ILI9341 HSPI is used, modify the pin configuration in components/drv/disp_spi.h
to:
#define DISP_SPI_MOSI 13
#define DISP_SPI_CLK 14
#define DISP_SPI_CS 15
and components/drv/ili9341.h
to:
#define ILI9341_DC 2
#define ILI9341_RST 4
#define ILI9341_BCKL 21
For XPT2046 VSPI is used, modify the pin configuration in components/drv/tp_spi.h
to:
#define TP_SPI_MOSI 23
#define TP_SPI_MISO 19
#define TP_SPI_CLK 18
#define TP_SPI_CS 5
and components/drv/xpt2046.h
to:
#define XPT2046_IRQ 25
See this pdf for further information: https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf
For ILI9341 HSPI is used, modify the pin configuration in components/drv/disp_spi.h
to:
#define DISP_SPI_MOSI 13
#define DISP_SPI_CLK 14
#define DISP_SPI_CS 15
and components/drv/ili9341.h
to:
#define ILI9341_DC 17
#define ILI9341_RST 25
#define ILI9341_BCKL 26
For XPT2046 VSPI is used, modify the pin configuration in components/drv/tp_spi.h
to:
#define TP_SPI_MOSI 23
#define TP_SPI_MISO 19
#define TP_SPI_CLK 18
#define TP_SPI_CS 5
and components/drv/xpt2046.h
to:
#define XPT2046_IRQ 27
For correct x/y coordinates, modify the min and max configuration in components/drv/xpt2046.h
to:
#define XPT2046_X_MIN 0
#define XPT2046_Y_MIN 0
#define XPT2046_X_MAX 4095
#define XPT2046_Y_MAX 4095
- Go to the project's directory:
cd esp32_ili9431
- Build the project:
make
- Upload the application to your board:
make flash