logo资料库

Rockchip_LCD开发文档v1.6.pdf

第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
资料共42页,剩余部分请下载后查看
福州瑞芯微电子有限公司 密级状态:绝密( ) 秘密( ) 内部( ) 公开( √ ) RockChip_LCD_开发文档 (MID) 文件状态: 当前版本: V1.6 [ ] 正在修改 作 者: Yxj、lb,hhb [√] 正式发布 完成日期: 2013-07-22 审 核: XXX 完成日期: 201X-XX-XX 说明:该文档针对 RK30XX 、RK2928、 RK31XX 以后的 FB 以及 LCDC 驱 动框架 福州瑞芯微电子有限公司 Fuzhou Rockchips Semiconductor Co . , Ltd (版本所有,翻版必究)
福州瑞芯微电子有限公司 版 本 历 史 版本号 作者 修改日期 修改说明 备注 1
福州瑞芯微电子有限公司 目录 目录 ...................................................................................................................................................................... 2 1 LCD 硬件原理 ............................................................................................................................................... 3 2 LCD 驱动框架及实现 ................................................................................................................................... 8 2.1 FB 框架相关的代码 ................................................................................................................................. 8 2.2 LCDC 相关的代码 .................................................................................................................................. 8 2.3 LCD 屏幕配置相关代码 ........................................................................................................................ 9 2.4 LCD 电源相关的操作的配置以及板级配置 ....................................................................................... 13 2.5 MAKE MENUCONFIG 相关配置 ............................................................................................................... 21 附录: ................................................................................................................................................................ 24 1 LVDS 、EDP、MIPI 显示接口转换芯片及其驱动 ................................................................................. 24 2 MIPI 屏幕的使用 ......................................................................................................................................... 26 2.1 相关代码 ............................................................................................................................................... 26 2.2 内核配置 ............................................................................................................................................... 26 2.3 屏幕配置文件 ....................................................................................................................................... 26 3 快速判断 RGB 颜色是否有颠倒 ................................................................................................................ 29 4 利用 LUT 功能改善显示效果 .................................................................................................................... 32 5 基于 RK FB 驱动的应用开发 ....................................................................................................................... 33 5.1 概述 ....................................................................................................................................................... 33 5.2 相关系统调用: ................................................................................................................................... 33 5.3 相关系统调用的流程 ........................................................................................................................... 38 6 支持 BMP 格式的开机 LOGO ................................................................................................................... 39 2
福州瑞芯微电子有限公司 1 LCD 硬件原理 LCD 是 Liquid Crystal Display 的简称,即液晶显示器,依据驱动方式可分为静 态驱动、简单矩阵驱动以及主动矩阵驱动 3 种。其中,简单矩阵型又可再细分扭转向 列型(TN)和超扭转式向列型(STN)两种,而主动矩阵型则以薄膜式晶体管型(TFT) 为主流。表(1) 列出了 TN、STN 和 TFT 显示器的区别。 类别 TN STN TFT 原理 特性 液晶分子,扭转 90 度 扭转 180~270 度 液晶分子,扭转 90 度 黑白,单色,低对比 黑白,彩色,低对比 彩色,高对比 动画显示 否 否 是 视角 30°以下 40°以下 80°以下 面板尺寸 1~3 英寸 1~12 英寸 37 英寸 表(1)TN、STN、TFT LCD 对比 由表(1)可以看出,TFT LCD 比 TN 和 STN LCD 的显示质量更佳,由于制造工艺 的原因,他的对比度高,反应速度快,能显示丰富的色彩。因此在当前的嵌入式市场 中,大量使用的就是 TFT LCD。 一块 LCD 屏显示图像不但需要 LCD 驱动器,还需要有相应的 LCD 控制器。通常 LCD 驱动器会以 COF/COG 的形式与 LCD 玻璃基板制作在一起,而 LCD 控制器(LCDC) 则由外部电路来实现。许多 MCU 内部直接集成了 LCD 控制器,比如 RK 系列的 CPU, 通过 LCD 控制器可以方便地控制 STN 和 TFT 屏。 图(1)给出了 TFT 屏的典型时序。时序图中的 VCLK、HSYNC 和 VSYNC 分别为 像素时钟信号(用于锁存图像数据的像素时钟)、行同步信号和帧同步信号,VDEN 为 数据有效标志信号,VD 为图像的数据信号。 3
福州瑞芯微电子有限公司 图(1)行场控制的 LCD 时序图 上图的 VSYNC 是帧同步信号,每发出一个脉冲,都意味着新的一屏图像数据开始 发送。HSYNC 是行同步信号,每发出一个脉冲都表明新的一行图像资料开始发送。在 帧同步以及行同步的头尾都必须留有回扫时间。这样的时序安排起源于 CRT 显示器电 子枪偏转所需要的时间,但后来成为实际上的工业标准,因此 TFT 屏也包含了回扫时 间,虽然对于 TFT 来说,这是不需要的。 图(2)给出了 LCD 控制器中应该设置的 TFT 屏的时序参数,其中的上边界(upper margin,vertical back porch)和下边界(low margin,vertical front porch)即为 帧切换的回扫时间,左边界(left margin,horizontal back porch)和右边界(right margin , horizontal front porch) 即 为 行 切 换 的 回 扫 时 间 , 水 平 同 步 (hsync , horizontal pulse width)和垂直同步(vsync,vertical pulse width)分别是行和帧 同步本身需要的时间。横向分辨率(xres,Horizontal valid data)和纵向分辨率(yres, vertical valid data),在我们的 MID 系统上,常用的 LCD 分辨率主要为 800*480、 4
福州瑞芯微电子有限公司 1024*600、1024*768、1280*800、1920*1200、2048*1536 等。 Vsync len Upper margin Left margin Xres 横向分辨率 Right margin Yres 纵向分辨率 Hsync Lower margin 图(2)LCD 中的时序参数 图(3)是一个典型的 LCD 的 timing characteristics: 图(3)timing characteristics 5
福州瑞芯微电子有限公司 可以看到,此款 LCD 可以用 DE 和 SYNC 两种模式去驱动,我们常用的是 SYNC 模式, 从软件上来说,DE 模式和 SYNC 模式是一样的,软件上不做区分。从表中我们可以得 到如下参数: Left_margin = HBP(Horizontal Back Porch) = 16; Right_margin = HFP(Horizontal Front Porch) = 210; Hsync = HPW(Horizontal Pulse Width )= 30; Xres = HVD(Horizontal Valid) = 800; Upper_margin = VBP(Vertical Back Porch) = 10; low_margin = VFP(Vertical Front Porch) = 22; Vsync = VPW(Vertical Pulse Width) = 13; Yres = VVD(Vertical Valid) = 480; 而且这些参数满足如下公式: Left_margin + right_margin + hsync + xres = horizontal period Upper_margin + low_margin + vsync + yres = vertical period 这些参数都要写入相应的 LCDC 寄存器里面。 另外有些 DE 模式的屏幕,并没有直接告诉 HFP、HSYNC、HBP、VFP、VSYNC、 VBP 这些参数,而给的是 Horizontal blank time 和 Vertical blank time,这时我们 只要保证如下关系即可: HFB + HSYNC + HBP = Horizontal blank time VFP + VSYNC + VBP = vertical blank time 在 LCD 驱动中,还有一个重要的参数----点时钟,即 dot clock,在 LCD 的 data sheet 里面一般是 MHZ,名称为 PCLK 或者 DCLK。例如,如果为 28.37516 MHz,那么画 1 个像素需要 35242 ps(皮秒): 1/(28.37516E6 Hz) = 35.242E-9 s 如果屏幕的分辨率是 640×480,显示一行需要的时间是: 640*35.242E-9 s = 22.555E-6 s 每条扫描线是 640,但是水平回扫和水平同步也需要时间,假设水平回扫同步需 要 272 个像素时钟,因此,画一条扫描线完整的时间是: (640+272)*35.242E-9 s = 32.141E-6 s 可以计算出水平扫描率大约是 31kHz: 1/(32.141E-6 s) = 31.113E3 Hz 完整的屏幕有 480 线,但是垂直回扫和垂直同步也需要时间,假设垂直回扫和垂 直同步需要 49 个象素时钟,因此,画一个完整的屏幕的时间是: (480+49)*32.141E-6 s = 17.002E-3 s 可以计算出垂直扫描率大约是 59kHz: 1/(17.002E-3 s) = 58.815 Hz 这意味着屏幕数据每秒钟大约刷新 59 次。 由此可以得到如下公式: 刷新率 =dotclock/((xres+left_margin+right_margin+hsync) *(yres+upper_margin+low_margin+vsync)) 在 linux frame buffer 子系统中,还有用到一个参数---像素时钟即 pixclock。 Pixclock = 1/dotclock 6
福州瑞芯微电子有限公司 对于 LCDC 驱动来说,就是要根据屏幕的这些时序参数(DCLK、HSYNC、HBP、HVD、 HFP、VSYNC、VBP、VVD、VFP)送出符合要求的信号。 这里需要说明的一点是,Android 的最高刷新频率为 60fps,所以我们最好保证 LCDC 的刷新频率也为 60fps,根据文档第一部分介绍的 LCDC 的刷新频率计算公式可以 知道,LCDC 的刷新频率和 DCLK 成正比,和水平方向与垂直方向参数之和的乘积成反 比。根据屏幕的 datasheet 我们可以看出,对于一款屏幕 H_VD/V_VD 对应屏幕的分辨 率,值是固定的不能修改,BP、FP、PW 的值都有一个最大值和最小值的取值范围,所 以当我们的 DCLK 分配不到想要的频率的时候,可以适当的调整 BP、FP、PW,是的 LCDC 的刷新率尽可能的接近 60FPS。 LCDC 的刷新率可以通过启动 log 查看: 或者通过 fb 的 sys 节点查看: 7
分享到:
收藏