跳转到内容

MIPI RGB 显示驱动

此显示驱动程序支持具有 16 位并行接口的显示屏,通常称为”RGB”。 两类显示屏属于此类别,第一类是只有 RGB 接口且不需要对驱动芯片进行特殊配置的显示屏。第二类是同时具有 RGB 接口和用于配置驱动芯片的 SPI 接口的显示屏。

该驱动程序支持多种显示驱动芯片,并且可以为自定义显示屏进行配置。除了支持驱动芯片外,还有几个带有集成显示屏的 ESP32 开发板的特定配置。对于这些开发板,预定义的配置将设置正确的引脚和显示屏尺寸。

对于自定义显示屏,可以配置正确的引脚和尺寸,并指定驱动芯片,或提供自定义初始化序列。

驱动芯片典型尺寸
ST7701S480x480
RPI可变
CUSTOM可变

RPI 驱动芯片代表没有 SPI 接口的显示屏,因此不需要初始化序列。CUSTOM 型号没有预定义的配置选项,因此需要完整的 YAML 配置。

这些开发板具有完全预填充的显示驱动程序配置,因此唯一必需的配置选项是 model

开发板驱动芯片制造商产品链接
GUITION-4848S040ST7701sGuitionhttps://devices.esphome.io/devices/Guition-ESP32-S3-4848S040
T-PANEL-S3ST7701sLilygohttps://lilygo.cc/products/t-panel-s3
T-RGB-2.1ST7701sLilygohttps://lilygo.cc/products/t-rgb
T-RGB-2.8ST7701sLilygohttps://lilygo.cc/products/t-rgb
SEEED-INDICATOR-D1ST7701sSeeed Studiohttps://www.seeedstudio.com/SenseCAP-Indicator-D1L-p-5646.html
ESP32-S3-TOUCH-LCD-4.3RPIWavesharehttps://www.waveshare.com/esp32-s3-touch-lcd-4.3.htm
ESP32-S3-TOUCH-LCD-7-800X480RPIWavesharehttps://www.waveshare.com/esp32-s3-touch-lcd-7.htm
WAVESHARE-3.16-320X820ST7701sWavesharehttps://www.waveshare.com/esp32-s3-lcd-3.16.htm
WAVESHARE-4-480X480RPIWavesharehttps://www.waveshare.com/esp32-s3-touch-lcd-4.htm
WAVESHARE-5-1024X600RPIWavesharehttps://www.waveshare.com/esp32-s3-touch-lcd-5.htm

此组件需要 ESP32(通常是 ESP32-S3,因为需要大量 GPIO 引脚)并使用 ESP-IDF。由于显示缓冲区的大小,PSRAM 是必需的。

Sensecap Indicator 显示屏
# 最小配置示例
display:
- platform: mipi_rgb
model: WAVESHARE-4-480x480
id: my_display
  • rotation (可选):在软件中旋转显示屏显示。选择 90°180°270° 之一。 此选项不能与 transform 同时使用。

  • update_interval (可选, 时间):重新绘制屏幕的间隔。默认为 5s

  • auto_clear_enabled (可选, 布尔值):是否在每次更新前清除显示屏。如果配置了 lambda 或页面,默认为 true,否则为 false。

  • lambda (可选, lambda):用于在显示屏上渲染内容的 lambda。 详见显示渲染引擎

  • pages (可选, 列表):显示页面而不是单个 lambda。详见显示页面

  • id (可选, ID):手动指定用于代码生成的 ID。

  • dimensions (必填):屏幕尺寸,指定为 宽度 x 高度(如 320x240)或使用单独的配置键。

    • height (**必填”, int):指定显示屏高度(像素)。
    • width (**必填”, int):指定显示屏宽度。
    • offset_width (可选, int):指定显示屏 x 方向的偏移量,通常用于 LCD 小于驱动芯片支持的最大尺寸时。默认为 0。
    • offset_height (可选, int):指定显示屏 y 方向的偏移量。默认为 0。
  • data_pins (**必填”):用于数据总线的引脚列表。分为 3 组指定。

    • red (**必填”, 引脚模式):红色数据位正好 5 个引脚,从最低有效位到最高有效位列出。
    • green (**必填”, 引脚模式):绿色数据位正好 6 个引脚,从最低有效位到最高有效位列出。
    • blue (**必填”, 引脚模式):蓝色数据位正好 5 个引脚,从最低有效位到最高有效位列出。
  • de_pin (**必填”, 引脚模式):DE 引脚。

  • pclk_pin (**必填”, 引脚模式):PCLK 引脚。

  • hsync_pin (**必填”, 引脚模式):水平同步引脚。

  • vsync_pin (**必填”, 引脚模式):垂直同步引脚。

  • reset_pin (可选, 引脚模式):RESET 引脚。

  • hsync_pulse_width (可选, int):水平同步脉冲宽度。

  • hsync_front_porch (可选, int):水平前肩长度。

  • hsync_back_porch (可选, int):水平后肩长度。

  • vsync_pulse_width (可选, int):垂直同步脉冲宽度。

  • vsync_front_porch (可选, int):垂直前肩长度。

  • vsync_back_porch (可选, int):垂直后肩长度。

  • pclk_frequency (可选):设置像素时钟速度。默认为 8MHz。

  • pclk_inverted (可选, 布尔值):pclk 是否为负有效(默认为 True)

水平和垂直 pulse_widthfront_porchback_porch 值是可选的,但特定显示屏可能需要从默认值更改。请参阅制造商的示例代码获取合适的值。这些指定了显示屏的时序要求。

需要自定义初始化序列的显示屏需要配置 SPI 总线,以及以下选项:

  • dc_pin (可选, 引脚模式):DC 引脚。

  • data_rate (可选):设置显示屏 SPI 接口的数据速率。可选 80MHz40MHz20MHz10MHz5MHz2MHz1MHz(默认)、200kHz75kHz1kHz

  • spi_mode (可选):设置显示屏 SPI 接口的模式。默认为 MODE0,但某些显示屏需要 MODE3

  • spi_id (可选, ID):要使用的 SPI 接口 ID - 如果只配置了一个 SPI 总线可以省略。

  • init_sequence (可选, 字节数组列表):指定显示屏的初始化序列。 预定义的开发板有默认初始化序列,可以覆盖。自定义开发板可以使用此变量指定初始化序列(RPI 显示屏应提供空序列,在这种情况下不需要 SPI 总线。)

  • pixel_mode (可选, 字符串):设置 RGB 总线接口的像素模式 - 16bit(默认)或 18bit 之一。

  • invert_colors (可选):反转显示屏颜色(白色变成黑色)。默认为 false。

  • color_order (可选):应为 bgr(默认)或 rgb 之一。

  • transform (可选):使用硬件变换显示屏显示。 这通常仅用于纠正 x 或 y 驱动器接线反向的显示屏。要旋转显示屏,首选 rotation 选项 - 如果可能,它将自动使用硬件变换。 mirror_xmirror_y 选项的默认值取决于型号。 对于 CUSTOM 型号,使用 transform: disabled 将防止 rotation 被转换为硬件变换。

    • mirror_x (可选, 布尔值):如果为 true,镜像 x 轴。
    • mirror_y (可选, 布尔值):如果为 true,镜像 y 轴。 注意: 要在硬件中将显示屏旋转 180 度,请将 mirror_xmirror_y 都设置为 true

init_sequence 需要一个元素列表,必须是提供附加初始化命令的字节数组,每个数组由一个命令字节后跟零个或多个数据字节组成。

可以使用 delay <N>ms 指定延迟

这些将在初始化期间通过 SPI 收集并发送到显示屏。SPI 总线不需要硬件实现(即可以使用 interface: software),并将在 RGB 驱动程序配置之前、初始化之后释放。这适用于将 SPI 总线引脚用作 RGB 引脚的开发板。

如果从其他代码复制初始化序列,请注意不应包含数组长度,因为它将从提供的字节数推断。SLPOUT、PIXFMT、INVON、INVOFF 和 DISPLAY_ON 命令将根据配置选项自动追加,不应包含在 YAML 的初始化序列中。

这是一个自定义配置的示例。

display:
- platform: mipi_rgb
model: custom
id: rpi_disp
update_interval: never
auto_clear_enabled: false
color_order: RGB
pclk_frequency: 16MHz
dimensions:
width: 800
height: 480
reset_pin:
ch422g:
number: 3
enable_pin:
ch422g:
number: 2
de_pin:
number: 5
hsync_pin:
number: 46
ignore_strapping_warning: true
vsync_pin:
number: 3
ignore_strapping_warning: true
pclk_pin: 7
pclk_inverted: true
hsync_back_porch: 30
hsync_front_porch: 210
hsync_pulse_width: 30
vsync_back_porch: 4
vsync_front_porch: 4
vsync_pulse_width: 4
data_pins:
red:
- 1 #r3
- 2 #r4
- 42 #r5
- 41 #r6
- 40 #r7
blue:
- 14 #b3
- 38 #b4
- 18 #b5
- 17 #b6
- 10 #b7
green:
- 39 #g2
- 0 #g3
- 45 #g4
- 48 #g5
- 47 #g6
- 21 #g7
init_sequence:
- [0x01]
- [0x3A, 0x66]