Framebuffer显示与触摸集成 - 第1节
1. LCD显示原理
液晶显示器(Liquid Crystal Display, LCD)的核心原理是利用液晶分子在电场作用下的排列变化,控制背光透过率,从而实现像素级的亮度与色彩显示。液晶本身不发光,必须依赖背光源(CCFL 或 LED)提供照明。
关键物理过程: 偏光片 → 液晶层(扭曲/垂直排列)→ 彩色滤光片(RGB子像素)→ 偏光片。电压改变液晶扭转角度,控制光通量。
1.1.1 液晶工作模式对比
| 模式 | 全称 | 特点 | 常见应用 |
|---|---|---|---|
| TN | Twisted Nematic | 响应快、成本低、视角窄 | 入门级显示器、工业屏 |
| IPS | In-Plane Switching | 视角广、色彩准、响应稍慢 | 手机、平板、专业显示器 |
| VA | Vertical Alignment | 对比度高、黑色深、视角中等 | 电视、高端显示器 |
驱动视角: 嵌入式驱动工程师不需要设计液晶化学配方,但必须理解像素矩阵的寻址时序、电压极性反转(防止液晶老化)以及背光 PWM 调光接口。
1.2 像素与分辨率
像素(Pixel)是显示画面的最小独立单元。每个像素由 R(红)、G(绿)、B(蓝)三个子像素组成。分辨率指屏幕在水平和垂直方向上的像素数量,例如 1024×600 表示水平 1024 个像素、垂直 600 个像素。
1.2.1 常见嵌入式 LCD 分辨率
| 分辨率 | 宽高比 | 典型尺寸 | 常见设备 |
|---|---|---|---|
| 480×272 | 16:9 | 4.3" | 工控屏、车载后视 |
| 800×480 | 5:3 | 5" / 7" | 智能家居、HMI |
| 1024×600 | 128:75 | 7" / 10.1" | 平板、POS 机 |
| 1920×1080 | 16:9 | 10.1" / 15.6" | 高端嵌入式、医疗 |
驱动陷阱: 分辨率不仅影响帧缓冲大小,还直接决定行同步(HSYNC)和场同步(VSYNC)的时序参数。配置错误的 HBP(水平后肩)或 VBP(垂直后肩)会导致画面偏移或撕裂。
1.3 色彩深度(RGB565 / RGB888)
色彩深度表示每个像素用多少位(bit)来描述颜色。嵌入式 LCD 驱动中最常用的两种格式是 RGB565 和 RGB888。
1.3.1 格式对比
| 格式 | 总位数 | R 位数 | G 位数 | B 位数 | 颜色总数 | 每像素字节 |
|---|---|---|---|---|---|---|
| RGB565 | 16 | 5 | 6 | 5 | 65,536 | 2 |
| RGB888 | 24 | 8 | 8 | 8 | 16,777,216 | 3(或 4 对齐) |
1.3.2 内存占用计算
帧缓冲(Framebuffer)大小 = 分辨率宽度 × 分辨率高度 × 每像素字节数。
// 示例:1024×600 分辨率,RGB565 格式
size = 1024 * 600 * 2 = 1,228,800 字节 ≈ 1.17 MB
// 示例:1024×600 分辨率,RGB888 格式(3 字节对齐)
size = 1024 * 600 * 3 = 1,843,200 字节 ≈ 1.76 MB
驱动选择建议: 对于低端 MCU 或小尺寸屏(< 5"),优先使用 RGB565 以减少帧缓冲内存和总线带宽。对于 Linux 嵌入式设备(如 i.MX、RK 系列),RGB888 是默认首选,Framebuffer 驱动通常配置为 32 位(XRGB8888)以对齐 4 字节。
1.4 刷新率概念
刷新率(Refresh Rate)指屏幕每秒更新完整画面的次数,单位是赫兹(Hz)。常见的刷新率有 60 Hz、75 Hz、120 Hz。刷新率由垂直同步信号(VSYNC)的频率决定。
1.4.1 刷新率与帧率的关系
- 刷新率(Refresh Rate): 硬件固定参数,由 LCD 控制器和面板共同决定。
- 帧率(Frame Rate): 软件生成画面的速度,由 CPU/GPU 和应用程序决定。
- 画面撕裂(Tearing): 当帧率与刷新率不匹配时,屏幕同时显示两帧不同内容,产生撕裂。
1.4.2 典型刷新率参数
| 刷新率 | 每帧时间 | 典型场景 | 驱动要求 |
|---|---|---|---|
| 60 Hz | 16.67 ms | 通用嵌入式、工控 | 标准 VSYNC 时序 |
| 75 Hz | 13.33 ms | 游戏、快速响应 | 更高像素时钟 |
| 120 Hz | 8.33 ms | 高端平板、VR | 双倍带宽、DSI 高速模式 |
驱动核心公式: 像素时钟(Pixel Clock)= 水平总像素 × 垂直总行数 × 刷新率。例如:1024×600 @60Hz,水平总像素 = 1344(含消隐区),垂直总行数 = 635(含消隐区),则像素时钟 ≈ 1344 × 635 × 60 ≈ 51.2 MHz。
1.5 本章知识结构总结
| 知识点 | 核心内容 | 驱动开发关联 |
|---|---|---|
| 液晶显示原理 | 偏光片、液晶层、彩色滤光片、背光 | 理解像素矩阵与电压控制 |
| 像素与分辨率 | RGB 子像素、H×V 数量 | 帧缓冲大小计算、时序配置 |
| 色彩深度 | RGB565(16位)、RGB888(24位) | 数据格式选择、内存对齐 |
| 刷新率 | VSYNC/HSYNC 时序、像素时钟 | 时钟配置、撕裂避免 |