RGBCLD
2025/9/8大约 5 分钟
RGBCLD
信号线

RGB888格式
每个像素由三个颜色通道组成,每个颜色占用8位,一个像素总占用24位
驱动模式

早期用HV,现在多用DE
ID表示方式


LCD_G7/B7/R7表示表示各自8位通道中的最高位,通过控制上拉下拉来定义ID
LTDC
如何驱动?
RGBLCD要什么LTDC就提供什么
LTDC 和 RGB LCD 的关系非常紧密,因为 LTDC 是用来驱动 RGB 接口 LCD 屏 的核心硬件模块。RGB LCD 是一种常见的显示屏类型,而 LTDC 则是一个能够为其提供必要控制信号和显示数据的控制器。
RGB LCD 和 LTDC 的关系
RGB LCD 的基本结构:
- RGB LCD 是指通过 RGB 数据接口 接收图像数据的液晶显示屏。它通过
R(红色)、G(绿色)、B(蓝色) 三种颜色信号混合来显示各种颜色,同时需要控制信号(如同步信号、时钟信号)来正确显示图像。 - 通常,RGB LCD 需要:
- 数据信号:每个像素的颜色值(RGB 信号)。
- 控制信号:同步信号(如水平同步 HSYNC、垂直同步 VSYNC)、数据使能信号 DE 和时钟信号 PCLK。
- 这些信号需要实时更新,以保证显示画面的刷新。
- RGB LCD 是指通过 RGB 数据接口 接收图像数据的液晶显示屏。它通过
LTDC 驱动 RGB LCD:
LTDC(LCD-TFT Display Controller) 是 STM32 系列中的硬件模块,用于直接控制 RGB LCD 显示屏。
LTDC 输出的信号
:
- 输出 RGB 数据(如 RGB565、RGB888 格式)。
- 提供 HSYNC(水平同步)、VSYNC(垂直同步)、DE(数据使能)、PCLK(像素时钟)等必要的控制信号。
LTDC 从帧缓存(Frame Buffer)中读取图像数据,将其转换为 RGB 信号,并通过 LCD 接口发送到 RGB LCD 显示屏。
RGB LCD 的显示原理
像素颜色显示:RGB LCD 的每个像素由红、绿、蓝(RGB)三种颜色的子像素组合而成。通过调整每种颜色的强度,就能显示不同的颜色。
时序控制
:
- HSYNC(水平同步):控制显示屏每行显示的开始和结束。
- VSYNC(垂直同步):控制显示屏每帧显示的开始和结束。
- DE(数据使能):指示哪些时钟周期内的数据是有效的。
- PCLK(像素时钟):驱动每个像素显示数据。
LTDC 和 RGB LCD 的联系(关键点)
| 特性 | RGB LCD | LTDC |
|---|---|---|
| 图像数据 | 接收 RGB 信号驱动每个像素显示 | 提供 RGB 数据,支持多种像素格式 |
| 时序信号 | 需要 HSYNC、VSYNC、DE、PCLK 等 | 生成并输出所需的时序信号 |
| 帧缓存 | 不具备帧缓存功能,依赖外部信号输入 | 通过外部内存(如 SDRAM)存储帧数据 |
| 接口类型 | 需要并行 RGB 数据接口 | 提供并行 RGB 输出 |
| 刷新 | 被动接收数据,刷新率由外部控制 | 主动生成数据,支持高刷新率 |
LTDC 驱动 RGB LCD 的基本流程
- 初始化 LTDC 模块:
- 配置 LTDC 的分辨率、时序参数(HSYNC、VSYNC、DE、总宽度和总高度等)。
- 设置帧缓存(Frame Buffer)地址,用于存储需要显示的图像数据。
- 加载显示数据:
- 将图像数据(像素数据)加载到帧缓存中,通常存储在外部存储器(如 SDRAM)。
- 发送数据到 RGB LCD:
- LTDC 从帧缓存中读取图像数据,并通过硬件生成 RGB 数据和时序信号。
- RGB LCD 接收数据后,根据时序信号刷新每个像素的颜色。
- 实时刷新:
- LTDC 不断从帧缓存读取图像数据,生成连续的帧信号,确保屏幕实时刷新。
LTDC 和 RGB LCD 的优势结合
| 优势 | 描述 |
|---|---|
| 实时显示高质量图像 | LTDC 支持高分辨率、高色深输出,使 RGB LCD 能显示清晰、色彩丰富的图像。 |
| 硬件驱动降低 CPU 负担 | LTDC 硬件独立生成时序和控制信号,减少对主 CPU 的依赖。 |
| 灵活的图层支持 | LTDC 支持多个图层叠加(如前景图层和背景图层),丰富显示效果。 |
| 适配多种 LCD 类型 | LTDC 支持不同的分辨率、像素格式和时序要求,适配多种 RGB LCD 显示屏。 |
示例:LTDC 驱动 RGB LCD 的配置
以下是 STM32 使用 LTDC 驱动 RGB LCD 的简单配置代码示例:
void LTDC_Config(void) {
LTDC_HandleTypeDef hltcd;
LTDC_LayerCfgTypeDef layer_cfg;
// 启用 LTDC 时钟
__HAL_RCC_LTDC_CLK_ENABLE();
// 配置 LTDC 控制器
hltcd.Instance = LTDC;
hltcd.Init.HorizontalSync = 40; // 水平同步宽度
hltcd.Init.VerticalSync = 9; // 垂直同步宽度
hltcd.Init.AccumulatedHBP = 42; // 水平后沿
hltcd.Init.AccumulatedVBP = 11; // 垂直后沿
hltcd.Init.TotalWidth = 800; // 总宽度
hltcd.Init.TotalHeigh = 480; // 总高度
hltcd.Init.Backcolor = LTDC_COLOR_BLACK; // 背景色
HAL_LTDC_Init(&hltcd);
// 配置图层
layer_cfg.WindowX0 = 0;
layer_cfg.WindowY0 = 0;
layer_cfg.WindowX1 = 800;
layer_cfg.WindowY1 = 480;
layer_cfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; // 像素格式
layer_cfg.FBStartAdress = (uint32_t)frame_buffer; // 帧缓存地址
layer_cfg.Alpha = 255; // 不透明度
HAL_LTDC_ConfigLayer(&hltcd, &layer_cfg, 1); // 配置图层 1
}总结
- LTDC 是 RGB LCD 的核心驱动模块,用于生成显示所需的 RGB 数据和时序信号。
- RGB LCD 作为显示终端,依赖 LTDC 提供数据来更新画面。
- 它们的组合为嵌入式设备提供了高效的图形显示解决方案。LTDC 的硬件加速和多图层功能使得 RGB LCD 能实现丰富的图形显示效果。
帧缓存<-LTDC->RGBLCD
底层基础


HSW-1是真正的列数,VSW-1是真正的行数(高度)
假设你要在一块大黑板上绘制一幅画,规则如下:
- 横向画线(行):每次从左到右画一行图案,画完后需要 “滴答” 一声(HSYNC)表示换行。
- 纵向换页(帧):画满所有行后,需要 “叮” 一声(VSYNC)表示换到下一页(新一帧)。
参数对应
| 动作 | 屏幕术语 | 示例值 |
|---|---|---|
| 每行画完“滴答”的时长 | HSW=4 | 滴持续4秒(4像素时钟) |
| 每页画完“叮”的时长 | VSW=2 | 叮持续2行(2×滴答间隔) |

