ILI9xxx TFT LCD 系列
使用此显示驱动你可以控制以下显示:
- GC9A01A
- GC9D01N
- ILI9341
- ILI9342
- ILI9481
- ILI9481-18(ILI9481 的 18 位模式,即 262K 色模式)
- ILI9486
- ILI9488
- ILI9488_A(ILI9488 的替代 Gamma 配置)
- M5STACK
- S3BOX
- S3BOX_LITE
- ST7735
- ST7796
- ST7789V
- TFT 2.4
- TFT 2.4R
- WAVESHARE_RES_3_5(Waveshare Pico-ResTouch-LCD-3.5)
将来会有更多的显示驱动。
此组件是 ILI9341 组件的继任者,支持来自 ILI 及相关 家族的更多显示驱动芯片。
ILI9xxx 显示平台允许你使用 ESPHome 的
ILI9341(数据手册)及其他
同芯片系列的显示器。由于这是较高分辨率的显示,需要超出基本 SPI 连接之外的额外引脚,
以及相当数量的 RAM,因此它不太适合 ESP8266。
WARNING
由于此类显示现已由 MIPI SPI 显示驱动 支持,此组件已被取代。 此组件可能在未来的版本中被移除。
NOTE
ESP32 上不会自动启用 PSRAM(这在 2025.2 版本中发生了变更)。如果 PSRAM 可用,你 应通过 PSRAM 配置 启用它。 使用 16 位颜色所需的 RAM 是 8 位的两倍,如果没有 PSRAM 可能无法使用。
NOTE
默认颜色深度为 16 位(RGB565)。也支持 8 位颜色,但颜色调色板必须设置为可用选项之一。 使用 16 位颜色所需的 RAM 是 8 位的两倍,如果没有 PSRAM 可能无法使用。

# 示例最小配置条目display: - platform: ili9xxx model: ili9341 dc_pin: GPIOXX reset_pin: GPIOXX invert_colors: false show_test_card: true所有 图形显示配置 选项均可用,此外还有以下选项。
-
model (必需): 显示的型号。可选值有:
M5STACK、TFT 2.4、TFT 2.4R、S3BOX、S3BOX_LITE、WSPICOLCDILI9341、ILI9342、ILI9486、ILI9488、ILI9488_A(ILI9488 的替代 Gamma 配置)ILI9481、ILI9481-18(18 位模式)ST7789V、ST7796、ST7735GC9A01A、GC9D01N、CUSTOM
-
dc_pin (必需, Pin Schema): DC 引脚。
-
reset_pin (可选, Pin Schema): RESET 引脚。
-
cs_pin (可选, Pin Schema): CS 引脚。
NOTE
DC 引脚始终必需,CS 引脚和 RESET 引脚只有在特定板将这些 引脚连接到 GPIO 时才需要。
-
color_palette (可选): 使用 8 位颜色时,此选项控制 ESP 内部 8 位/像素缓冲中将使用的颜色调色板类型。可用于提高图像的颜色深度质量。例如,如果你知道显示只将显示灰度图像,可以通过将可用颜色集中在灰度上来提高显示的清晰度。可选值有:
NONE(默认)颜色将为 16 位 RGB5658BIT颜色将为 8 位 RGB332GRAYSCALE颜色将为 8 位灰度IMAGE_ADAPTIVE颜色将为 8 位,颜色调色板将根据下面color_palette_images列表中的图像生成。
-
color_order (可选): 应为
bgr(默认)或rgb之一。 -
color_palette_images (可选): 用于生成显示颜色调色板的图像文件列表。仅应与
color_palette: IMAGE_ADAPTIVE配合使用。图像将在编译时分析,并根据最常见的颜色创建自定义颜色调色板。典型的设置是一个代表完全填充显示的样本图像。这可以显著提高显示图像的质量。请注意,这些图像不会存储在 ESP 设备上,仅存储从它们创建的 256 字节颜色调色板。 -
dimensions (可选): 屏幕尺寸,可以 width x height(例如
320x240)或分别用配置键指定。如果不提供,尺寸将由所选型号确定。- height (必需, int): 以像素指定显示的高度。
- width (必需, int): 指定显示的宽度。
- offset_width (可选, int): 指定显示的 x 方向偏移量,通常用于 LCD 小于驱动芯片最大支持尺寸时。默认为 0
- offset_height (可选, int): 指定显示的 y 方向偏移量。默认为 0。
-
invert_colors (必需): 指定显示颜色是否应反转。可选值为
true或false- 如果你不确定,使用false,如果颜色与预期不符则更改。 -
pixel_mode (可选): 允许强制显示进入 18 位或 16 位模式。可选值为
18bit或16bit。如果不指定,像素模式将由型号选择确定。并非所有显示都两种模式都能工作。 -
rotation (可选): 在软件中旋转显示。可选值为
0°、90°、180°或270°。此选项不能与transform一起使用。 -
transform (可选): 使用硬件转换显示。所有默认值均为
false。此选项不能与rotation一起使用。- swap_xy (可选, boolean): 如果为 true,则交换 x 和 y 轴。
- mirror_x (可选, boolean): 如果为 true,则镜像 x 轴。
- mirror_y (可选, boolean): 如果为 true,则镜像 y 轴。
NOTE
rotation 变量将执行基于软件的旋转。
更好的做法是使用 transform 选项在硬件中旋转显示。使用以下组合之一:
- 90 度 - 使用
swap_xy配合mirror_x - 180 度 - 使用
mirror_x配合mirror_y - 270 度 - 使用
swap_xy配合mirror_y
对于 90 和 270 旋转,你还需要在 dimensions 中交换 height 和 width(见下面的示例)。
- init_sequence (可选): 允许添加自定义初始化序列。有关更多信息,请参见下文。
要修改 SPI 设置,请参见 SPI 总线。默认的 data_rate 设置为 40MHz,spi_mode 模式为 MODE0,但一些显示需要 MODE3(*)。
注意: 最大可实现的数据速率将取决于芯片类型(例如 ESP32 与 ESP32-S3)、使用的引脚(在 ESP32 上使用默认 SPI 引脚允许更高的速率)和连接类型(板载连接将比长电缆或杜邦线支持更高的速率)。如果不确定,请从低速开始并测试更高的速率以找到可用的速率。应尽量避免指定 MISO 引脚,因为这将在某些情况下限制最大速率,如果 SPI 总线仅用于显示,则不需要。
附加初始化序列
Section titled “附加初始化序列”init_sequence 选项允许对驱动芯片进行附加配置。提供的命令将在选定型号的预定义命令之后发送到驱动芯片。它需要一个字节序列列表:
init_sequence: - [ 0xD0, 0x07, 0x42, 0x18] - [ 0xD1, 0x00, 0x07, 0x10]每个条目代表一个单字节命令,后跟零个或多个数据字节。
CUSTOM 型号
Section titled “CUSTOM 型号”CUSTOM 型号选择用于其他不受支持的显示,需要同时指定 dimensions: 和 init_sequence:。没有预定义的初始化序列。
要使用硬件旋转,请使用 dimensions 和 transform,例如以下配置将高度为 320、宽度为 480 的横向显示
变为纵向。注意,尺寸是最终显示的尺寸。
transform: swap_xy: true mirror_x: truedimensions: height: 480 width: 320要利用此显示模块的颜色功能,你可能需要在你的
YAML 配置中添加一个 color: 部分;有关此配置部分的更多详细信息,请参见 颜色。
要在 lambda 中使用颜色:
color: - id: my_red red: 100% green: 3% blue: 5%
...
display: ... lambda: |- it.rectangle(0, 0, it.get_width(), it.get_height(), id(my_red));要引入彩色图像:
image: - platform: file file: "image.jpg" id: my_image resize: 200x200 type: RGB
...
display: ... lambda: |- it.image(0, 0, id(my_image));要配置可调光背光:
# 在 ESP32 上定义 PWM 输出output: - platform: ledc pin: GPIOXX id: backlight_pwm
# 定义单色、可调光背光灯光light: - platform: monochromatic output: backlight_pwm name: "Display Backlight" id: back_light restore_mode: ALWAYS_ON要配置图像自适应颜色调色板,以便在 RAM 受限的屏幕缓冲中显示超过 8 位的颜色深度:
image: - platform: file file: "sample_100x100.png" id: myimage resize: 100x100 type: RGB
display: - platform: ili9xxx model: ili9341 dc_pin: GPIOXX reset_pin: GPIOXX rotation: 90 id: tft_ha color_palette: IMAGE_ADAPTIVE color_palette_images: - "sample_100x100.png" - "display_design.png" lambda: |- it.image(0, 0, id(myimage));在 Lilygo T-Embed 上使用 transform 选项在硬件中旋转显示。它使用 st7789v,但只使用 240 宽度中的 170 像素。
此配置使用驱动芯片将显示旋转到横向模式。
display: - platform: ili9xxx model: st7789v dimensions: height: 170 width: 320 offset_height: 35 offset_width: 0 transform: swap_xy: true mirror_x: false mirror_y: true color_order: bgr invert_colors: true data_rate: 80MHz cs_pin: GPIOXX dc_pin: GPIO13 reset_pin: GPIO9对于 Lilygo TTGO 板,如果从 st7789v 迁移到此组件,需要以下设置才能使其工作。
display: - platform: ili9xxx model: st7789v #TTGO TDisplay 135x240 dimensions: height: 240 width: 135 offset_height: 40 offset_width: 52 # 必需,否则颜色全部反转,黑屏变为白屏 invert_colors: true