platformio下ESP32驱动屏幕ili9486 spi触摸xpt2046 GUIslice TFT_eSPI

· 更新于

arduinoesp32ILI9486platformxpt2046

记录使用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 ---`