TFT_eSPI 上手指南:不翻源码,5 分钟点亮你的 TFT 屏

📅 2026/8/24 3:38:54
TFT_eSPI 上手指南:不翻源码,5 分钟点亮你的 TFT 屏
TFT_eSPI 上手指南不翻源码5 分钟点亮你的 TFT 屏【免费下载链接】TFT_eSPIArduino and PlatformIO IDE compatible TFT library optimised for the Raspberry Pi Pico (RP2040), STM32, ESP8266 and ESP32 that supports different driver chips项目地址: https://gitcode.com/GitHub_Trending/tf/TFT_eSPITFT_eSPI 是一个面向 ESP32、ESP8266、RP2040、STM32 等 32 位开发板的 TFT 屏驱动库。它把 20 多种屏控制器ILI9341、ST7735、ST7796、GC9A01 等的初始化寄存器序列都写好了你只需要在库的配置头文件里填 3 个引脚号examples 目录里的示例就能直接烧进板子跑。适合手里有一块 SPI 或并口 TFT 屏、想快速做出图形界面的开发者。先搞清楚它替你干了什么手写屏驱动最痛苦的不是画图 API而是初始化序列——每个控制器芯片的寄存器顺序、延时都不一样写错一位就是白屏。TFT_eSPI 把这一步固化成了 TFT_Drivers/ 目录下的 20 多套驱动文件你选哪个芯片它就按哪套序列初始化。它按处理器做了性能优化不同平台的接口能力差别不小选屏前先对一下处理器4 线 SPI8 位并口16 位并口DMARP2040支持支持支持全部接口ESP32支持支持不支持仅 SPIESP32 S3支持支持不支持仅 SPIESP8266支持不支持GPIO 不够不支持不支持STM32F1xx~F7xx支持支持不支持仅 SPI如果你的屏是 UNO 杜邦排针格式的 8 位并口屏配 ESP32 的 UNO 兼容板时引脚布局可以参考这张图ESP32 UNO 兼容开发板 8 位并口 TFT 屏引脚布局5 分钟亮屏clone、改 3 个宏、烧示例拿代码git clone https://gitcode.com/GitHub_Trending/tf/TFT_eSPIclone 下来整个目录就是一个完整的库直接放进 Arduino 的 libraries 文件夹PlatformIO 用户可以在 platformio.ini 里通过TFT_ESPI_USER_SETUP_PATH指定外部配置文件写法见 docs/PlatformIO/。改 User_Setup.h库根目录的 User_Setup.h 分 4 段驱动、引脚、字体、其他选项。亮屏只需要动前两段以 ILI9341 ESP32 为例#define ILI9341_DRIVER // 第 1 段20 个驱动里只留这一个 #define TFT_MOSI 23 // 第 2 段填你板子上实际的 GPIO #define TFT_SCLK 18 #define TFT_CS 15 #define TFT_DC 2 #define TFT_RST 4不想手改的话User_Setup_Select.h 里列了 60 多份现成的 User_Setups/ 预设比如 Setup42_ILI9341_ESP32.h取消注释对应那一行、同时注释掉默认的 include示例程序一行不用改就能跑。烧一个现成示例打开 examples/ 下和你屏分辨率对应的子目录ILI9341 进 320 x 240编译运行TFT_graphicstest_PDQ满屏画线、画圆、画字跑完基本能确认屏没接错。接线对照表ILI9341 接 ESP32SPI 屏的接线就 8 根线其中 5 根必须接对剩下的按你的板子情况定屏引脚ESP32 GPIO说明SDO/MISO19不需要读屏的话可以空着SDI/MOSI23SCK18CS15总线上没有其他 SPI 设备时可直连 GND同时去掉配置里的 TFT_CS 定义DC也叫 RS/A02数据/命令选择线必须接RST4接到板子 RST 引脚时配置里写TFT_RST -1VCC / 背光3.3V / 5V逻辑供电 3.3V背光一般吃 5VGNDGND下面这张 3.5 英寸 RPi LCD V3.0 的图把带触摸屏的完整接法标出来了。注意左下角的 T_CS触摸片选不用触摸功能时它必须接到 3.3V否则 XPT2046 会一直占用 SPI 总线导致显示异常。SPI 时钟和几个容易踩的配置项SPI 时钟直接决定刷新速度但超过屏控制器承受范围就会出条纹、花屏。User_Setup.h 第 4 段给了各芯片的实测参考控制器建议 SPI 时钟通用起点27MHz先保证能正常显示ILI934140MHz 稳定80MHz 偶发失败ILI916327MHzST7735超过 27MHz 容易出现杂点杂线确认能显示后把它往上改一次升一档#define SPI_FREQUENCY 40000000 // ILI9341 的实测稳定值 #define SPI_TOUCH_FREQUENCY 2500000 // XPT2046 只支持 2.5MHz别动还有三个高频踩坑项红蓝通道互换红色显示成蓝色在第 1 段解开TFT_RGB_ORDER TFT_BGR黑白反色解开TFT_INVERSION_ON试一次ST7735 屏图形偏移、颜色怪异需要再定义一个ST7735_*TAB宏一次只开一个逐个试。精灵、平滑字体、触摸三个常用进阶用精灵做无闪烁动画精灵就是在 RAM 里开一块小画布画完一次性推上屏适合时钟指针、滚动条这类高频刷新内容。注意 16 位色深下每像素占 2 字节240x120 的精灵要吃 57.6KB开多大看你板子的 RAMTFT_eSprite spr TFT_eSprite(tft); // 绑定到主屏 spr.createSprite(240, 120); // 在 RAM 里开一块 240x120 缓冲区 spr.fillSprite(TFT_BLACK); spr.pushSprite(0, 0); // 整块推上屏无闪烁上抗锯齿字体内置位图字体只有 8 种固定字号想要更精细的字就换平滑字体.vlw 矢量轮廓 抗锯齿。前提是 User_Setup.h 里保留#define SMOOTH_FONT它占约 20KB Flashtft.loadFont(NotoSansBold15); // 从 .h 数组加载用完记得释放 tft.print(Smooth font); tft.unloadFont();字体文件用 Tools/Create_Smooth_Font/ 里的工具从 TTF 生成产物就是上面这种可直接 include 的 .h 数组。接 XPT2046 触摸库内置 XPT2046 支持不用引第三方库。在 User_Setup.h 里定义TOUCH_CS为触摸片选脚代码里这样读uint16_t x, y; if (tft.getTouch(x, y)) { // 有按压才返回 true tft.fillCircle(x, y, 4, TFT_RED); }触摸复用同一根 SPI 总线库已自动按 2.5MHz 限速不用你管频率。屏不亮、颜色反、触摸失灵先查这 4 处白屏/无显示先确认屏的供电和 RST 接法再核对 User_Setup.h 里的驱动 #define 跟屏上芯片型号一致——型号相近的屏ILI9341/ST7789初始化序列并不通用。颜色红蓝互换或黑白反用TFT_RGB_ORDER和TFT_INVERSION_ON组合试一次只改一项。画面有规律条纹、撕裂SPI 时钟超了把SPI_FREQUENCY降一档。触摸读不到确认TOUCH_CS定义了、T_CS 脚接对了空闲时接 3.3V并确认你的屏确实是 XPT2046 方案。拿不准时直接烧 examples 目录里 Test and diagnostics 下的TFT_ReadWrite_Test、Colour_Test、Test_Touch_Controller三个测试程序比对着屏幕猜接线快得多。下一步建议把SPI_FREQUENCY从 27MHz 逐级往上加找到你的屏不花屏的最高值然后跑一遍 examples/Sprite/ 里的动画示例配合精灵做几个高频刷新的小部件。这两件事做完这个库的日常用法就算摸熟了。【免费下载链接】TFT_eSPIArduino and PlatformIO IDE compatible TFT library optimised for the Raspberry Pi Pico (RP2040), STM32, ESP8266 and ESP32 that supports different driver chips项目地址: https://gitcode.com/GitHub_Trending/tf/TFT_eSPI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考