跳到正文
Display Engineer
排障

ILI9341 与 ST7789:如何判断你的显示屏用的是哪种控制器

同名板子会搭配 ILI9341 或 ST7789 控制器出货。介绍如何通过现象或读取 ID 寄存器来识别,以及修复白屏和颜色错误的设置。

DEDisplay Engineer Applications Team · 显示应用工程师工程师审核于 2026年10月11日

为什么同一块板子会有不同的控制器

低价显示板使用从公开市场采购的面板。某个批次更换供应商时,控制器也可能随之改变,而板子名称、PCB 和引脚定义保持不变。ESP32-2432S028R(Cheap Yellow Display)和 ESP32-2432S024 都有 ILI9341 和 ST7789 两种版本。

通过现象识别

用 ILI9341 设置时看到的现象

可能原因

解决方法

白屏或无显示,背光亮

控制器是 ST7789

切换到 ST7789 驱动

有画面,但颜色像底片

ST7789 面板需要反转

切换反转(TFT_INVERSION_ON)

红蓝互换

颜色顺序

设为 BGR 顺序(TFT_RGB_ORDER TFT_BGR)

画面镜像或偏移

旋转 / 存储访问设置

修改旋转(MADCTL)

完全黑屏

背光引脚错误或被复用

检查背光 GPIO

一次只改一个设置,并保留一个已知正常的示例用于对比。

通过读取 ID 识别

如果板子接了面板的 MISO 线,就可以直接读取控制器 ID 而不用猜。ILI9341 会对 Read ID4 命令(0xD3)返回 0x9341。在 TFT_eSPI 中,tft.readcommand8(0xD3, n) 读取寄存器的第 n 个字节。如果读不到 0x93 和 0x41,就试试 ST7789 驱动。没有 MISO 的板子无法读取,请用现象对照表判断。

不同的设置

项目

ILI9341

ST7789

TFT_eSPI 驱动

ILI9341_DRIVER / ILI9341_2_DRIVER

ST7789_DRIVER

LovyanGFX

Panel_ILI9341

Panel_ST7789

ESP-IDF

espressif/esp_lcd_ili9341

esp_lcd_new_panel_st7789()(内置)

反转

通常关闭

通常开启

两者的模板分别在 ILI9341 和 ST7789V 页面上。

在产品中如何避免

做产品时,请选用规格书明确写出控制器、且供应商按生产批次固定控制器的模组,这样固件不会因换批次而失效。我们的 2.8 英寸 240×320 SPI 模组采用指定的 ST7789V;样品 1 片起。

常见问题

ILI9341 的代码能在 ST7789 上运行吗?

不可靠。两者都是 240×320 控制器,但初始化序列不同,所以应该更换驱动,而不是修改 ILI9341 的代码。

为什么我的 ST7789 显示屏颜色反了?

许多 ST7789 面板需要开启显示反转(INVON)。启用 TFT_INVERSION_ON 或调用 tft.invertDisplay(true)。

如何读取控制器 ID?

接了 MISO 时读取寄存器 0xD3(Read ID4):ILI9341 会返回 0x93 0x41。没有 MISO 时通过现象识别。

本指南提到的模组

不确定哪款显示屏适合你的设计?

告诉我们尺寸、接口和主控。显示工程师会在 12 小时内回复 2–3 个方案,附规格书和初始化代码。样品 1 片起。