MIPI RGB 显示驱动
此显示驱动程序支持具有 16 位并行接口的显示屏,通常称为”RGB”。 两类显示屏属于此类别,第一类是只有 RGB 接口且不需要对驱动芯片进行特殊配置的显示屏。第二类是同时具有 RGB 接口和用于配置驱动芯片的 SPI 接口的显示屏。
支持的开发板和驱动芯片
Section titled “支持的开发板和驱动芯片”该驱动程序支持多种显示驱动芯片,并且可以为自定义显示屏进行配置。除了支持驱动芯片外,还有几个带有集成显示屏的 ESP32 开发板的特定配置。对于这些开发板,预定义的配置将设置正确的引脚和显示屏尺寸。
对于自定义显示屏,可以配置正确的引脚和尺寸,并指定驱动芯片,或提供自定义初始化序列。
| 驱动芯片 | 典型尺寸 |
|---|---|
| ST7701S | 480x480 |
| RPI | 可变 |
| CUSTOM | 可变 |
RPI 驱动芯片代表没有 SPI 接口的显示屏,因此不需要初始化序列。CUSTOM 型号没有预定义的配置选项,因此需要完整的 YAML 配置。
支持的集成显示开发板
Section titled “支持的集成显示开发板”这些开发板具有完全预填充的显示驱动程序配置,因此唯一必需的配置选项是 model。
| 开发板 | 驱动芯片 | 制造商 | 产品链接 |
|---|---|---|---|
| GUITION-4848S040 | ST7701s | Guition | https://devices.esphome.io/devices/Guition-ESP32-S3-4848S040 |
| T-PANEL-S3 | ST7701s | Lilygo | https://lilygo.cc/products/t-panel-s3 |
| T-RGB-2.1 | ST7701s | Lilygo | https://lilygo.cc/products/t-rgb |
| T-RGB-2.8 | ST7701s | Lilygo | https://lilygo.cc/products/t-rgb |
| SEEED-INDICATOR-D1 | ST7701s | Seeed Studio | https://www.seeedstudio.com/SenseCAP-Indicator-D1L-p-5646.html |
| ESP32-S3-TOUCH-LCD-4.3 | RPI | Waveshare | https://www.waveshare.com/esp32-s3-touch-lcd-4.3.htm |
| ESP32-S3-TOUCH-LCD-7-800X480 | RPI | Waveshare | https://www.waveshare.com/esp32-s3-touch-lcd-7.htm |
| WAVESHARE-3.16-320X820 | ST7701s | Waveshare | https://www.waveshare.com/esp32-s3-lcd-3.16.htm |
| WAVESHARE-4-480X480 | RPI | Waveshare | https://www.waveshare.com/esp32-s3-touch-lcd-4.htm |
| WAVESHARE-5-1024X600 | RPI | Waveshare | https://www.waveshare.com/esp32-s3-touch-lcd-5.htm |
此组件需要 ESP32(通常是 ESP32-S3,因为需要大量 GPIO 引脚)并使用 ESP-IDF。由于显示缓冲区的大小,PSRAM 是必需的。
# 最小配置示例display: - platform: mipi_rgb model: WAVESHARE-4-480x480 id: my_display-
rotation (可选):在软件中旋转显示屏显示。选择
0°、90°、180°或270°之一。 此选项不能与transform同时使用。 -
update_interval (可选, 时间):重新绘制屏幕的间隔。默认为
5s。 -
auto_clear_enabled (可选, 布尔值):是否在每次更新前清除显示屏。如果配置了 lambda 或页面,默认为
true,否则为 false。 -
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 组指定。
-
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_width、front_porch 和 back_porch 值是可选的,但特定显示屏可能需要从默认值更改。请参阅制造商的示例代码获取合适的值。这些指定了显示屏的时序要求。
非 RPI 显示屏的附加配置
Section titled “非 RPI 显示屏的附加配置”需要自定义初始化序列的显示屏需要配置 SPI 总线,以及以下选项:
-
dc_pin (可选, 引脚模式):DC 引脚。
-
data_rate (可选):设置显示屏 SPI 接口的数据速率。可选
80MHz、40MHz、20MHz、10MHz、5MHz、2MHz、1MHz(默认)、200kHz、75kHz或1kHz。 -
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_x和mirror_y选项的默认值取决于型号。 对于CUSTOM型号,使用transform: disabled将防止rotation被转换为硬件变换。- mirror_x (可选, 布尔值):如果为 true,镜像 x 轴。
- mirror_y (可选, 布尔值):如果为 true,镜像 y 轴。
注意: 要在硬件中将显示屏旋转 180 度,请将
mirror_x和mirror_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]