Arduino Uno驱动2.4寸SPI TFT LCD出现白屏问题求助
2.4寸SPI TFT LCD白屏问题排查与解决
问题概况
- 硬件组合:Arduino Uno + 2.4寸SPI TFT LCD
- 电源接线:VCC接5V,GND接GND,LED接3.3V
- 故障现象:上传代码后屏幕始终白屏,已安装所需库、多次检查接线、尝试官方示例代码均无效
代码错误分析
你提供的代码中,Adafruit_ILI9341构造函数参数存在明显错误:
// 错误代码:重复传入TFT_RST,遗漏了TFT_MOSI Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST, TFT_CLK, TFT_RST, TFT_MISO);
自定义SPI引脚的构造函数参数顺序为:CS, DC, RST, CLK, MOSI, MISO,你把第五个参数(应为MOSI)错误写成了TFT_RST,修正后代码如下:
#include <Adafruit_GFX.h> #include <Adafruit_ILI9341.h> #include <SPI.h> #define TFT_CLK 13 // SPI clock pin (CLK) #define TFT_MISO 12 // SPI MISO pin #define TFT_MOSI 11 // SPI MOSI pin #define TFT_CS A5 // TFT chip select pin (CS/SS) #define TFT_RST A4 // TFT reset pin (RST/RESET) #define TFT_DC A3 // TFT data/command pin (DC) //#define TFT_LED A0 // 修正构造函数参数 Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST, TFT_CLK, TFT_MOSI, TFT_MISO); void setup() { tft.begin(); tft.setRotation(0); tft.fillScreen(ILI9341_BLACK); tft.setTextColor(ILI9341_WHITE); tft.setTextSize(2); tft.setCursor(10, 10); tft.println("Hello, World!"); } void loop() { // 无需额外代码 }
也可以直接使用默认硬件SPI的简化构造,避免参数顺序出错:
// 使用默认SPI引脚(13=SCK,11=MOSI,12=MISO) Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
硬件排查建议
- 确认驱动芯片型号:部分2.4寸SPI屏实际使用ST7789、ILI9488等芯片,而非ILI9341,库不匹配会直接导致白屏,需核对屏幕背面的芯片标识
- 重新检查接线:确保所有SPI引脚接线牢固无虚焊:
- CLK → 13,MOSI → 11,MISO → 12
- CS → A5,DC → A3,RST → A4
- 电源适配测试:部分屏的VCC支持3.3V供电,可尝试将VCC改接Arduino的3.3V引脚测试(注意不要接反电源)
- 复位引脚检查:可尝试将RST引脚通过10K电阻上拉至3.3V,或在代码初始化前手动控制RST电平:
void setup() { pinMode(TFT_RST, OUTPUT); digitalWrite(TFT_RST, LOW); delay(100); digitalWrite(TFT_RST, HIGH); delay(100); tft.begin(); // 后续初始化代码... }
其他排查方向
- 确认Arduino Uno的SPI引脚未被其他外设占用
- 更换质量可靠的USB数据线,确保代码已成功上传至板卡
- 换用其他Arduino板测试,排查屏幕本身是否损坏
内容的提问来源于stack exchange,提问作者adin
相关产品推荐
相关产品推荐

