为什么同一块板子会有不同的控制器
低价显示板使用从公开市场采购的面板。某个批次更换供应商时,控制器也可能随之改变,而板子名称、PCB 和引脚定义保持不变。ESP32-2432S028R(Cheap Yellow Display)和 ESP32-2432S024 都有 ILI9341 和 ST7789 两种版本。
通过现象识别
用 ILI9341 设置时看到的现象 | 可能原因 | 解决方法 |
|---|---|---|
白屏或无显示,背光亮 | 控制器是 ST7789 | 切换到 ST7789 驱动 |
有画面,但颜色像底片 | ST7789 面板需要反转 | 切换反转( |
红蓝互换 | 颜色顺序 | 设为 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 驱动 | | |
LovyanGFX | | |
ESP-IDF | | |
反转 | 通常关闭 | 通常开启 |
两者的模板分别在 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 时通过现象识别。

