一、LCD 显示的底层逻辑:像素如何被点亮
LCD 屏幕本质上是一个由像素点组成的网格。每个像素点由红(R)、绿(G)、蓝(B)三个子像素构成,通过不同亮度组合呈现出丰富色彩。
- 色彩深度:比如 RGB888 格式,每个颜色通道用 8 位表示,能显示 1677 万种颜色,画面更细腻;RGB565 则用 16 位表示,在性能和效果间做了平衡。
- 扫描方式:屏幕采用从左到右、从上到下的逐行扫描方式。配合行同步(HSYNC)和场同步(VSYNC)信号,确保画面稳定无撕裂。
二、i.MX6U 与 LCD 的硬件连接
i.MX6U 通过内置的 **eLCDIF(增强型 LCD 接口)** 驱动屏幕,采用单工并行同步通信方式,主要分为两类信号:
1. 数据信号
- 24 位数据线:传输 RGB888 格式的像素数据,每个像素用 24 位表示(R/G/B 各 8 位)。
- 像素时钟(PCLK):作为数据传输的基准,每一个时钟周期发送一个像素的数据。
2. 控制信号
- 行同步(HSYNC):标记一行像素的开始,通知 LCD 切换到下一行。
- 场同步(VSYNC):标记一帧画面的开始,通知 LCD 切换到下一帧。
- 数据使能(DE):高电平时表示数据线传输的是有效像素数据。
此外,i.MX6U 还通过 32 位地址和数据总线连接外部显存,通过 DMA 直接将显存中的图像数据传输到 LCD,减少 CPU 干预。
三、关键时序详解:行同步与场同步
LCD 的稳定显示完全依赖精准的时序控制。以 800×480 分辨率为例,我们拆解行同步(HSYNC)和场同步(VSYNC)的结构。
1. 行同步时序
一个完整的行周期包含四个部分:
- 行有效显示(HACT):800 个像素时钟周期,对应一行 800 个有效像素。
- 行消隐前沿(HFP):40 个像素时钟周期,行扫描结束后,为电路回扫准备的缓冲时间。
- 行同步脉宽(HSYNC):48 个像素时钟周期,拉低 HSYNC 信号,通知 LCD 开始新一行。
- 行消隐后沿(HBP):88 个像素时钟周期,为行扫描电路稳定到正扫状态预留的时间。
行总像素数 = 800 + 40 + 48 + 88 = 976,每个行周期持续 976 个像素时钟。
2. 场同步时序
场同步对应一帧画面的完整周期,同样包含四个部分:
- 场有效显示(VACT):480 行,对应一帧 480 行有效像素。
- 场消隐前沿(VFP):13 行,场扫描结束后的回扫缓冲时间。
- 场同步脉宽(VSYNC):3 行,拉低 VSYNC 信号,通知 LCD 开始新的一帧。
- 场消隐后沿(VBP):32 行,为场扫描电路稳定预留的时间。
四、i.MX6U 驱动 LCD 的软件配置步骤
要让 LCD 正常工作,需要完成三个核心配置步骤:
1. 引脚配置
将 i.MX6U 的相关引脚复用为 eLCDIF 功能,包括数据线、PCLK、HSYNC、VSYNC 和 DE。
- 确保引脚的电气特性匹配 LCD 的电平要求,必要时添加电平转换电路。
2. 时钟配置
- 配置 eLCDIF 时钟源:选择合适的时钟源,并通过分频器生成满足 LCD 要求的像素时钟。
- 例如,800×480@60Hz 的屏幕,像素时钟通常需要约 33MHz。
3. eLCDIF 控制器配置
- 时序参数配置:在 eLCDIF 寄存器中写入 HACT、HFP、HSYNC、HBP 和 VACT、VFP、VSYNC、VBP 等参数。
- 数据格式配置:选择 RGB888 或 RGB565 等像素格式,配置显存地址和 DMA 传输方式。
- 使能控制器:完成配置后,使能 eLCDIF,此时控制器会自动从显存读取数据并驱动 LCD 显示。
五、总结
i.MX6U 驱动 LCD 的核心是理解像素点亮逻辑 、硬件连接 和时序控制这三点。从硬件上通过 eLCDIF 并行传输数据,到软件上精准配置时序参数,每一步都直接影响着画面的稳定性和显示效果。