记录使用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_sSPI时候,一直卡在触摸没有反应,原来问题的重点在于SDO引脚不能和触摸的TDO连一起,会让触摸的TDO失效。所以SDO空着!

by zouzhe

软件处理

说明:
触摸可以直接用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
---