记录使用ESP32开发4寸tft lcd spi彩屏ili9486,加xpt2046触摸电阻屏。
需要用到的库:
- TFT_sSPI
- XPT2046_Touchscreen
- GUIslice
硬件连接
重要说明:SDO(MSIO)不连接,空着。
T_IRQ T_CS CS RESET DC 是通用io,随便定义。
T_DO—–esp32 MISO
T_DI和SDI(MOSI)—–esp32 MOSI
T_CLK和SCK—–esp32 SCK
led可以直接连3.3v,可以pwm。vcc可以3/5v
软件处理
说明:
触摸可以直接用TFT_eSPI内置的库,要打开 #define TOUCH_CS 21 ,
也可以使用单独的库PaulStoffregen/XPT2046_Touchscreen,此时要关闭 TFT_eSPI 里面的 #define TOUCH_CS 21 ,本文用的是后者。
修改位置
1,.pio\libdeps\esp32dev\TFT_eSPI\User_Setup.h
47行,打开#define ILI9486_DRIVER这个注释,关闭默认的9341
198行,开6个屏幕SPI定义
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS 15 // Chip select control pin
#define TFT_DC 2 // Data Command control pin
#define TFT_RST 4
216行的触控CS引脚,要关闭,不要打开 //#define TOUCH_CS 21
编译过程如果提示FS.h找不到,那就把那个宏定义加字符,关掉它!
2,修改.pio\libdeps\esp32dev\GUIslice\src\GUIslice_config.h
133行,打开#include “../configs/esp-tftespi-default-xpt2046.h”
3,修改.pio\libdeps\esp32dev\GUIslice\configs\ esp-tftespi-default-xpt2046.h
#define DRV_DISP_TFT_ESPI // bodmer/TFT_eSPI
#define DRV_TOUCH_XPT2046_PS // PaulStoffregen/XPT2046_Touchscreen
#define XPT2046_CS 25
#define XPT2046_IRQ 27 // IRQ pin or 255 if no IRQ used
用校准程序得到如下数据,填写到上面这个文件对应位置。
.pio\libdeps\esp32dev\GUIslice\examples\arduino\diag_ard_touch_calib\diag_ard_touch_calib.ino
Recommended calibration settings are shown below.
- Copy and paste these lines into your GUIslice config file
over top of the existing ADATOUCH_X/Y_MIN/MAX settings.
---
// DRV_TOUCH_XPT2046_PS [320x480]:
#define ADATOUCH_X_MIN 3933
#define ADATOUCH_X_MAX 223
#define ADATOUCH_Y_MIN 3959
#define ADATOUCH_Y_MAX 252
#define ADATOUCH_REMAP_YX 0
---
本文地址: platformio下ESP32驱动屏幕ili9486 spi触摸xpt2046 GUIslice TFT_eSPI