嵌入式开发基础学习笔记(RGB LCD 驱动开发)

RGB LCD 驱动开发学习笔记

1. LCD 硬件接口与信号线

RGB LCD 采用并行接口,主要包含以下信号线:

  • 数据线:R[7:0](8根)、G[7:0](8根)、B[7:0](8根),共24根数据线(也可配置为16位模式)。
  • 控制信号线
    • DE (Data Enable):数据使能信号。
    • VSYNC:垂直同步信号(帧同步信号)。
    • HSYNC:水平同步信号(行同步信号)。
    • PCLK (Pixel Clock):像素时钟信号。
2. LCD 像素格式 (Pixel Format)
  • ARGB8888 格式 :一个像素点占用 4 个字节 (32位)。
    • A (Alpha):透明度通道 (bit 31-24)。
    • R (Red):红色通道 (bit 23-16)。
    • G (Green):绿色通道 (bit 15-8)。
    • B (Blue):蓝色通道 (bit 7-0)。
  • 显存 (Frame Buffer):需要在 DDR 中开辟一段内存空间用于存放像素数据,eLCDIF 控制器会自动从该地址读取数据发送给 LCD。
3. LCD 时序详解 (重点)

LCD 显示一帧图像的过程类似于"画图",电子枪从左到右、从上到下扫描像素点。为了锁定有效的像素数据,需要设置特定的时序参数(包含"黑边"时间)。

A. 行显示时序 (Horizontal Timing)

行时序决定了每一行的扫描过程。

  • HSYNC:行同步信号(低电平有效)。

  • HSPW (Horizontal Sync Pulse Width):行同步信号宽度(Thp),单位为 CLK。

  • HBP (Horizontal Back Porch):行同步信号后肩(Thb)。

  • HOZVAL:显示一行有效数据所需的时间(即屏幕宽度)。

  • HFP (Horizontal Front Porch) :行同步信号前肩(Thf)。

  • 关键计算公式:

  • 显示一行所需时间 = HSPW + HBP + HOZVAL + HFP

  • 有效像素开始位置 = 等待 HSPW + HBP 个 CLK 时间后开始。

B. 帧显示时序 (Vertical Timing)

帧时序决定了每一帧(画面)的扫描过程。

  • VSYNC:帧同步信号(低电平有效)。
  • VSPW (Vertical Sync Pulse Width):帧同步信号宽度(Tvp)。
  • VBP (Vertical Back Porch):帧同步信号后肩(Tvb)。
  • LINE (或 VERVAL):显示一帧有效数据所需的时间(即屏幕高度)。
  • VFP (Vertical Front Porch):帧同步信号前肩(Tvf)。

关键计算公式:

  • 显示一帧所需时间 = (VSPW + VBP + LINE + VFP) 个行时间。
  • 总像素时钟频率 = 1 / (显示一帧所需时间 * 显示一行所需时间)

C. 时序参数对照表

参数缩写 全称 中文含义 说明
HSPW Horizontal Sync Pulse Width 行同步脉宽 HSYNC 信号持续时间
HBP Horizontal Back Porch 行后肩 同步信号结束后到有效数据开始的时间
HFP Horizontal Front Porch 行前肩 有效数据结束后到下一次同步信号的时间
VSPW Vertical Sync Pulse Width 帧同步脉宽 VSYNC 信号持续时间
VBP Vertical Back Porch 帧后肩 帧同步信号结束后到有效数据开始的时间
VFP Vertical Front Porch 帧前肩 有效画面结束后到下一次帧同步的时间
4. eLCDIF 控制器配置

I.MX6U 的 LCD 控制器称为 eLCDIF (Enhanced LCD Interface)

A. 像素时钟配置 (Pixel Clock)

eLCDIF 的工作频率需要根据屏幕参数精确配置。

  • 时钟源选择 :通常选择 PLL5 (Video PLL)
  • 分频流程
    1. 选择 PLL5 作为时钟源(设置 CSCDR2[LCDIF1_PRE_CLK_SEL])。
    2. 经过预分频器(设置 CSCDR2[LCDIF1_PODF])。
    3. 最终到达 eLCDIF 外设。
  • 计算示例
    • 目标频率:31.5 MHz。
    • 设置 PLL5 为 1008 MHz -> 4分频 -> 8分频 -> 31.5 MHz。

B. 关键寄存器配置

在代码中,需要初始化 LCDIF_CTRLLCDIF_VDCTRL0-4 等寄存器。

寄存器 关键位域 (BitFields) 说明
LCDIF_CTRL CLKGATE, SFTRST 复位和时钟门控
DOTCLK_MODE 必须置 1,工作在 DOTCLK 模式
WORD_LENGTH 像素位宽 (3=24位)
LCDIF_VDCTRL0 HSYNC_POL, VSYNC_POL 同步信号极性设置
ENABLE_POL DE 信号极性
VSYNC_PULSE_WIDTH VSPW 值设置
LCDIF_VDCTRL2 HSYNC_PULSE_WIDTH HSPW 值设置
HSYNC_PERIOD 一行的总周期 (HSPW+HBP+WIDTH+HFP)
LCDIF_VDCTRL3 VERTICAL_WAIT_CNT VSPW + VBP
HORIZONTAL_WAIT_CNT HSPW + HBP
LCDIF_VDCTRL4 DOTCLK_H_VALID_DATA_CNT 设置屏幕宽度 (WIDTH)
5. 驱动初始化流程
  1. 初始化 IO 引脚 :将 LCD 相关引脚复用为 LCDIF 功能,并配置电气属性(如驱动能力、压摆率)。
  2. 初始化像素时钟:配置 CCM 模块,设置 PLL5 和分频器,生成所需的像素时钟(如 31.5MHz)。
  3. 配置 eLCDIF 寄存器
    • 复位控制器。
    • 设置屏幕分辨率(TRANSFER_COUNT)。
    • 配置时序参数(VSPW, VBP, VFP, HSPW, HBP, HFP)。
    • 设置显存地址(CUR_BUF, NEXT_BUF)。
  4. 开启显示:使能 eLCDIF 控制器,之后显存中的数据会自动显示在屏幕上。
相关推荐
小龙报4 分钟前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业5 分钟前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能9 分钟前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微
czwxkn27 分钟前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件
Love Song残响41 分钟前
NVIDIA显卡终极优化指南
stm32·单片机·嵌入式硬件
qq_672592751 小时前
电源芯片为什么发热
单片机·嵌入式硬件
天天爱吃肉82181 小时前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车
国科安芯2 小时前
抗辐照MCU在精密时频系统中的单粒子效应评估与可靠性验证
单片机·嵌入式硬件·架构·制造·安全性测试
森焱森2 小时前
嵌入式硬件工程师应知 白银快速分析报告
linux·c语言·arm开发·嵌入式硬件·去中心化
BackCatK Chen12 小时前
第 8 篇:TMC2240 电机正反转实现|DIR 引脚控制 + 代码优化(稳定不抖动)
stm32·单片机·嵌入式硬件·保姆级教程·电机正反转·tmc2240·dir引脚控制