当前位置: 首页 > news >正文

硬件(十五)LCD

一、分辨率

LCD(Liquid Crystal Display,液晶显示器)是常见输出设备,广泛应用于手机、电脑等。其分辨率指屏幕像素数量,如 1080P 对应 1920*1080 个像素点,像素点由 R(红)、G(绿)、B(蓝)三原色组成。在 LCD 尺寸不变时,分辨率越高越清晰;分辨率不变时,LCD 尺寸越小越清晰,比如同是 1080P 的 5 寸手机显示比 24 寸显示器更细腻。但分辨率并非衡量 LCD 好坏的唯一标准,还需考虑色彩还原程度、色彩偏离、亮度、可视角度、屏幕刷新率等参数。

二、像素格式

一个像素点可看作 RGB 小灯,通过控制 R、G、B 亮度显示色彩。RGB888 格式中,R、G、B 各用 8bit 数据,一个像素点共 24bit(3 字节);加入 8bit Alpha(透明)通道的 ARGB8888 格式,一个像素点为 32bit(4 字节)。实验中使用 ARGB8888 格式,一个像素占用 4 字节内存,其中 bit31~bit24 是 Alpha 通道,bit23~bit16 是 RED 通道,bit15~bit8 是 GREEN 通道,bit7~bit0 是 BLUE 通道,通过调节 R、G、B 比例可产生不同颜色,如 0X00FFFF00 为黄色,0X00000000 为黑色,0X00FFFFFF 为白色。

三、LCD 硬件接口

LCD 有多种接口,如 VGA、HDMI、DP 等,但 I.MX6U - Mini 开发板支持 RGB 接口的 LCD。RGB LCD 接口的信号线包括:

  • R [7:0]、G [7:0]、B [7:0]:共 24 根,为红、绿、蓝数据线。
  • DE:数据使能线。
  • VSYNC:垂直同步信号线。
  • HSYNC:水平同步信号线。
  • PCLK:像素时钟信号线。
    RGB LCD 有 DE 模式和 HV 模式两种驱动模式,DE 模式需用到 DE 信号线,且可不用 HSYNC 信号线,LCD 仍能正常工作;HV 模式不需要 DE 信号线。

四、LCD 时间参数

LCD 显示一帧图像的过程可想象为用 “笔” 按从左至右、从上到下顺序扫描像素点并上色。以分辨率 1024*600 的 LCD 为例,存在 HBP(行同步信号后肩)、HFP(行同步信号前肩)、VBP(帧同步信号后肩)、VFP(帧同步信号前肩)这些时间参数,它们源于 CRT 显示器电子枪的反应延时,在 LCD 中则是为了给屏幕内部 IC 反应时间,锁定有效像素数据,这些参数需查看 LCD 数据手册获取,且在 LCD 驱动编写中会用到。

五、LCD 的时序

(一)行显示时序

  • HSYNC:行同步信号,有效时表示开始显示新一行数据,需查看 LCD 数据手册确定是低电平还是高电平有效(假设低电平有效)。
  • HSPW(thp):HSYNC 信号宽度,即 HSYNC 信号持续时间,单位为 CLK。
  • HBP(thb):行同步信号后肩,单位为 CLK。
  • HOZVAL(thd):显示一行数据所需时间,若屏幕分辨率为 1024*600,HOZVAL 为 1024,单位为 CLK。
  • HFP(thf):行同步信号前肩,单位为 CLK。
    显示一行所需时间为:HSPW + HBP + HOZVAL + HFP。

(二)帧显示时序

  • VSYNC:帧同步信号,有效时表示开始显示新一帧数据,需查看 LCD 数据手册确定电平有效性(假设低电平有效)。
  • VSPW(tvp):VSYNC 信号宽度,即 VSYNC 信号持续时间,单位为 1 行的时间。
  • VBP(tvb):帧同步信号后肩,单位为 1 行的时间。
  • LINE(tvd):显示一帧有效数据所需时间,若屏幕分辨率为 1024*600,LINE 为 600 行的时间。
  • VFP(tvf):帧同步信号前肩,单位为 1 行的时间。
    显示一帧所需时间为:(VSPW + VBP + LINE + VFP) * (HSPW + HBP + HOZVAL + HFP)。配置 RGB LCD 时需知道 HOZVAL(屏幕有效宽度)、LINE(屏幕有效高度)、HBP、HSPW、HFP、VSPW、VBP 和 VFP 这些参数。

六、像素时钟

以 alpha 开发板搭载的正点原子 RGB LCD(型号 ATK4384,分辨率 800*480)为例,其时间参数为:HSPW(thp)48 tCLK、HBP(thb)88 tCLK、HFP(thf)40 tCLK、垂直显示区域 480 th、VSPW(tvp)3 th、VBP(tvb)32 th、VFP(tvf)13 th,像素时钟 31MHz。
显示一帧图像所需时钟数为:(VSPW + VBP + LINE + VFP) * (HSPW + HBP + HOZVAL + HFP) = (3 + 32 + 480 + 13) * (48 + 88 + 800 + 40) = 515328 个时钟,显示 60 帧所需时钟数约 31M,故像素时钟为 31MHz。
I.MX6U 的 LCD 控制器为 Enhanced LCD Interface(eLCDIF),需配置其工作频率。可选择 PLL5 作为时钟源,经倍频、分频等操作得到所需像素时钟频率,还需配置相关寄存器如 CCM_ANALOG_PLL_VIDEO 等。

七、eLCDIF 控制器

eLCDIF 支持 MPU 接口、VSYNC 接口和 DOTCLK 接口,本次使用 DOTCLK 接口(用于链接 RGB 屏)。要驱动 RGB LCD 屏幕,需配置好时间参数等,通过相应寄存器实现,重要寄存器及位功能如下:

  • LCDIF_CTRL 寄存器
    • SFTRST (bit31):eLCDIF 软复位控制位,为 1 时强制复位 LCD。
    • CLKGATE (bit30):正常运行时需为 0,否则时钟不进入 LCDIF。
    • BYPASS_COUNT (bit19):工作在 DOTCLK 模式时需为 1。
    • VSYNC_MODE (bit18):为 1 时 LCDIF 工作在 VSYNC 接口模式。
    • DOTCLK_MODE (bit17):为 1 时 LCDIF 工作在 DOTCLK 接口模式。
    • INPUT_DATA_SWIZZLE (bit15:14):输入数据字节交换设置,设为 0 为小端模式(不交换字节)。
    • CSC_DATA_SWIZZLE (bit13:12):CSC 数据字节交换设置,设为 0(不使用字节交换)。
    • LCD_DATABUS_WIDTH (bit11:10):LCD 数据总线宽度,设为 3(24 位总线宽度)。
    • WORD_LENGTH (bit9:8):输入数据格式(像素数据宽度),设为 3(每个像素 24 位)。
    • MASTER (bit5):设为 1,eLCDIF 工作在主模式。
    • DATA_FORMAT_16_BIT (bit3):与 WORD_LENGTH 配合,确定像素格式(如 ARGB555 或 RGB565)。
    • DATA_FORMAT_18_BIT (bit2):WORD_LENGTH 为 2 时有效,控制像素格式(如 RGB666)。
    • DATA_FORMAT_24_BIT (bit1):WORD_LENGTH 为 3 时有效,控制 24 位数据有效情况。
    • RUN (bit0):eLCDIF 接口运行控制位,为 1 时开始传输数据(使能位)。
  • LCDIF_CTRL1 寄存器:用到 BYTE_PACKING_FORMAT (bit19:16),显示 24 位数据(ARGB 格式,A 通道不传输)时设为 0X7(使所有字节有效)。
  • LCDIF_TRANSFER_COUNT 寄存器:高 16 位 V_COUNT 为 LCD 垂直分辨率,低 16 位 H_COUNT 为水平分辨率(如 1024*600 分辨率时,V_COUNT 为 600,H_COUNT 为 1024)。
  • LCDIF_VDCTRL0 寄存器
    • VSYNC_OEB (bit29):VSYNC 信号方向控制,0 为输出,1 为输入。
    • ENABLE_PRESENT (bit28):使能 DE 数据线,1 为使能,0 为关闭。
    • VSYNC_POL (bit27)、HSYNC_POL (bit26)、DOTCLK_POL (bit25)、ENABLE_POL (bit24):分别设置 VSYNC、HSYNC、DOTCLK、ENABLE 数据线极性,需根据 LCD 数据手册设置。
    • VSYNC_PERIOD_UNIT (bit21):VSYNC 信号周期单位,DOTCLK 模式设为 1(单位为水平行)。
    • VSYNC_PULSE_WIDTH_UNIT (bit20):VSYNC 信号脉冲宽度单位,DOTCLK 模式设为 1。
    • VSYNC_PULSE_WIDTH (bit17:0):VSPW 参数设置位。
  • LCDIF_VDCTRL1 寄存器:设置 VSYNC 总周期(屏幕高度 + VSPW + VBP + VFP)。
  • LCDIF_VDCTRL2 寄存器:高 18 位为 HSYNC_PULSE_WIDTH(设置 HSYNC 信号宽度,即 HSPW),低 18 位为 HSYNC_PERIOD(设置 HSYNC 总周期,即屏幕宽度 + HSPW + HBP + HFP)。
  • LCDIF_VDCTRL3 寄存器
    • HORIZONTAL_WAIT_CNT (bit27:16):DOTCLK 模式下,设置 HSYNC 信号产生到有效数据产生的时间(HSPW + HBP)。
    • VERTICAL_WAIR_CNT (bit15:0):设置 VSYNC 信号相关时间(VSPW + VBP)。
  • LCDIF_VDCTRL4 寄存器
    • SYNC_SIGNALS_ON (bit18):同步信号使能位,设为 1 使能 VSYNC、HSYNC、DOTCLK 等信号。
    • DOTCLK_H_VALID_DATA_CNT (bit15:0):设置 LCD 宽度(水平像素数量)。

显存相关

若采用 ARGB8888 格式,一个像素需 4 字节内存,1024*600 分辨率需约 1.5MB 内存。RGB LCD 内部无内存,需在开发板 DDR3 中分出一段作为显存。eLCDIF 控制器的 LCDIF_CUR_BUF(当前缓冲)和 LCDIF_NEXT_BUF(下一帧缓冲)寄存器用于设置显存地址。可将 LCDIF_CUR_BUF 设为显存首地址,eLCDIF 会自动显示显存中按 RGB888 格式存储的像素数据;LCDIF_NEXT_BUF 用于下一帧显示,若 GPU 渲染下一帧,可利用此寄存器避免图像撕裂(也可将两寄存器设为同一地址,修改时直接显示,但高速图像可能撕裂)。

初始化流程

LCD 逻辑驱动的初始化流程为:初始化 IO 引脚 -> 初始化像素时钟 -> 初始化 eLCDIF。

http://www.dtcms.com/a/392037.html

相关文章:

  • B3clf: 最新的精准预测药物血脑屏障透过能力的开源app
  • 第八章 惊喜10 分享+
  • SMMU 软件指南
  • [x-cmd] Windows 安装和使用 x-cmd 的方法
  • 17.渗透-.Linux基础命令(九)-Linux权限管理(chmod修改文件权限)
  • 测量交流电压,测量直流电压,兼容,ADC采样转换计算有效值
  • 红黑树封装实现map set
  • EMQX和MQTTX的安装
  • AI 大模型入门 四:检索增强生成(RAG),自动生成精准用例!
  • EDR与MITRE ATTCK 详解
  • 特征值和特征向量
  • Gridview:让 HPC 作业管理真正“看得见、点得着、跑得快”
  • C++/初识
  • 进一步理解自适应卡尔曼滤波(AKF)
  • 反馈循环的跨领域智慧:从控制工程到Pix2Pix
  • AI智能体如何开发工作流及注意事项
  • 电视插座工程量计算-图形识别秒计量
  • 1.1 进程与内存知识点总结
  • 深度学习-神经网络(下篇)
  • 检查 Nginx 是否启动的几种方法
  • CSS 创建漂亮的文字肖像
  • 37、RAG系统架构与实现:知识增强型AI的完整构建
  • 当贝桌面 4.1.6 | 支持文件快传(电脑传到TV),内存清理,海量4K壁纸,自定义应用和功能
  • 30-39、大模型实战构建完整技术手册:从0到1的工程化实现体系
  • 【Python】Tkinter库实现GUI界面计算器
  • 茶叶在线销售与文化交流平台的设计与实现(java)
  • 中电金信 :MCP在智能体应用中的挑战与对策
  • AI智能体开发目前主要基于哪些方面?
  • 8.2-spring 事务-声明式事务(@Transactional原理)
  • 数据分类分级:数据安全与治理的核心框架