RK平台LCD调试说明【转】
本文转载自:http://blog.csdn.net/u014770862/article/details/76274951?locationNum=2&fps=1
RK平台LCD调试说明
本篇博文使用Rockchip平台RK3288主控,向大家分享自己总结的Rockchip平台LCD调试的一些经验。不足之处,敬请谅解!
Platform : Rockchip
Soc : RK3288
System : Android 5.1
RK3288的LCD调试,根据屏幕规格书对dts作相应的修改基本都可点亮,配置也较为简单,有几个概念容易混淆,单纯的点屏基本上不需要了解相关的LVDS,EDP协议等。本篇博客大致讲述RK平台LVDS、EDP屏的调试经验,协议部分不会涉及,MIPI屏部分暂时还未深入了解。
前言
在fb驱动这块,大致分为了四部分,rk_screen首先会读取dts中screen信息,传给screen_type驱动(本例也就是rk32_lvds.c),这些信息最终都会被fb获取。详细的流程分析请参考博文:RK平台fb源码分析系列
LVDS调试
dts实例
贴一个LVDS屏参的实例,仅供参考:
disp_timings: display-timings {
native-mode = <&timing0>;
timing0: timing0 {
screen-type = <SCREEN_LVDS>;
lvds-format = <LVDS_8BIT_2>;
out-face = <OUT_P888>;
color-mode = <COLOR_RGB>;
clock-frequency = <43000000>; //43000000
hactive = <1024>;
vactive = <600>;
hback-porch = <100>;
hfront-porch = <60>;
vback-porch = <10>;
vfront-porch = <8>;
hsync-len = <5>;
vsync-len = <2>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <1>;
swap-rb = <0>;
swap-rg = <0>;
swap-gb = <0>;
};
};
参数看起来挺多的,其实真正需要改的一般不多。那究竟哪些都需要修改呢?这当然是根据不同的LCD参考其规格书修改的,dts中需要重点关注的有以下几个参数:
screen_type,lvds-format,out-face,clock-frequency,hactive,vactive,hbp,hfp,vbp,vfp
screen_type
screen-type表示屏幕类型(RGB,LVDS,EDP,MIPI,HDMI,MCU),如果该屏幕为LVDS屏,则screen-type就
应该取值为SCREEN_LVDS。如果是RGB屏幕,则screen-type取值为SCREEN_RGB。screen-type的值有以下
几种:
SCREEN_RGB,SCREEN_LVDS(SCREEN_DUAL_LVDS,SCREEN_LVDS_10BIT,SCREEN_DUAL_LVDS_10BIT)
,SCREEN_HDMI,SCREEN_MIPI,SCREEN_DUAL_MIPI、SCREEN_EDP
#define SCREEN_NULL 0
#define SCREEN_RGB 1
#define SCREEN_LVDS 2
#define SCREEN_DUAL_LVDS 3
#define SCREEN_MCU 4
#define SCREEN_TVOUT 5
#define SCREEN_HDMI 6
#define SCREEN_MIPI 7
#define SCREEN_DUAL_MIPI 8
#define SCREEN_EDP 9
#define SCREEN_TVOUT_TEST 10
#define SCREEN_LVDS_10BIT 11
#define SCREEN_DUAL_LVDS_10BIT 12
lvds_format
lvds-format表示LVDS的数据方式,只有在该屏幕是LVDS屏的时候该参数才有效。该值需要结合屏幕和LVDS在
硬件上的连接方式来定义。lvds_format的值有以下几种:LVDS_8BIT_1、LVDS_8BIT_2、LVDS_8BIT_3、
LVDS_6BIT。
#define LVDS_8BIT_1 0
#define LVDS_8BIT_2 1
#define LVDS_8BIT_3 2
#define LVDS_6BIT 3
#define LVDS_10BIT_1 4
#define LVDS_10BIT_2 5
LCD的datasheet一般都会说明LVDS信号在各个通道上的分配方式,如下:
如上图所示,我们将LVDS通道分为Y0、Y1、Y2、Y3,其中Y0对应于上图的Rxin0,Y1对应于上图的Rxin1,Y2和Y3以此类推,一个通道可以传输7bit数据。根据规格书,那么lvds-format我们究竟选择哪一个呢?这几种格式得区别如下:
当然了,事事无绝对,上述判断只能得出大概结论,不能100%保证正确。主要还是由于屏线的原因,开发板底座和屏之间并不是一一对应起来的,也就是说屏的引脚和底座之间排线的选择并不唯一。不过,最为稳妥的方法应该是根据” LVDS Data Input Format”与屏引脚定义来判断lvds-format,因为我们总是要满足”屏”(最起码屏线不要接错)。
LVDS两种format:FORMAT 1、 FORMAT 2
两者主要区别在于Y3通道上FORMAT 1传输的是颜色的高两位,FORMAT 2传输的是颜色的低两位。通常LCD显示有水彩,就是lvds-format设置错误,调换format即可。
液晶屏中常见的LVDS数据映射标准(将像素的并行数据转化为串行数据)有VESA和JEIDA两种格式,一般情况下均是默认JEIDA格式。有些LVDS屏也会在datasheet中说明:
这款LG的LVDS屏,当第7脚为高电平时,逻辑板工作在JEIDA格式下,为低电平或NC时工作在VESA格式下。两种格式的区别如下:
从规格书中可以发现,两种格式的区别主要在于第3通道(D)上,JEIDA格式的第三通道是各种颜色的低两位(R0 R1 G0 G1 B0 B1),而VESA格式的第三通道上传输的是颜色的高两位(R6 R7 G6 G7 B6 B7)。对应于dts中的lvds_format,也就等同于:
JEIDA —-> LVDS_8BIT_2
VESA —-> LVDS_8BIT_1
LVDS有多种数据传输模式:单路6bit LVDS、双路6bit LVDS、单路8bit LVDS、双路8bit LVDS
SoC中,单路还是双路工作方式不同:
因此,单路或是双路处理方式不同而已。事实上,单双路的控制就是通过配置lvds dual cnannel control的开关,配置如下:
而代码中,也是这样控制来作区分的(可参考博文RK FB源码分析之SCREEN_TYP)
如何从屏幕规格书中来区分是单路还是双路?
有的规格书会简述,如:LVDS(1 ch,8 bit),表示LVDS接口类型是单通道,8bit的信号带宽(RGB每色有8阶色彩,总色为2^8*2^8*2^8=1677W色)。
最直观简单的方式就是从屏的引脚定义分析,通常双路LVDS屏都会有odd(or first) input channel和even(or second) input channel,例如:
而单路LVDS通常只有三组或者四组data input和一组clock,例如:
clock-frequency
双路LVDS时,clocks要取LCD规格书中典型值的2倍
单路LVDS时,clocks取LCD规格书中的典型值即可
out-face
屏幕采用多少位的接线方式。如果是24bit的屏幕,则为OUT_P888;如果是18bit的屏幕, 数据线分别接在每种
单元色的高六位则定义为OUT_D888_P666(就是B0 B1 G0 G1 R0 R1不接),如果数据线接在LCDC的低 18 位
(connect to lcdc D0~D17),则定义为 OUT_P666。这个如果设置的不正确,比如 24bit 的接法,定义成
OUT_D888_P666或者OUT_P666 就有可能出现色阶。
该参数可判断规格书Display Colors的值做参考。
其它参数
hback-porch,hfront-porch,vback-porch ,vfront-porch,hsync-len,vsync-len
上述六个参数按照规格书来填充(目前大多数屏都是DE mode,DE模式的话一般都会标明DE mode only),DE模式只需要关注两个参数Vertical section blanking和Horizontal section blanking,例如:
上图中,Vertical section blanking=42, Horizontal section blanking=204,在填充6个参数时只需要满足关系:vbp+vfp+vs=42,hbp+hfp+hs=204,各值自行分配(通常hbp和vbp取较大值),例如
hback-porch = <150>;
hfront-porch = <50>;
vback-porch = <30>;
vfront-porch = <11>;
hsync-len = <4>;
vsync-len = <1>;
hsync-active,vsync-active,de-active,pixelclk-active,各参数含义如下:
hsync-active: hsync pulse is active low/high/ignored
vsync-active: vsync pulse is active low/high/ignored
de-active: data-enable pulse is active low/high/ignored
pixelclk-active:
active high = drive pixel data on rising edge/ sample data on falling edge
active low = drive pixel data on falling edge/ sample data on rising edge
ignored = ignored
其中,需要注意参数pixelclk-active,该参数控制有效的pixel data数据在rising edge还是falling edge显示.LVDS显示有雪花点,噪点等情况时可调整该参数。
EDP调试
待续
RK平台LCD调试说明【转】的更多相关文章
- 高通平台 lcd driver 调试小结
一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2 开发环境 And ...
- 高通Android平台硬件调试之Camera篇
之前一段时间有幸在高通android平台上调试2款camera sensor,一款是OV的5M YUV sensor,支持jpeg out,同时也支持AF,调试比较比较简单,因为别的项目已经在使用了, ...
- MTK65XX平台充电调试总结
MTK平台充电调试总结 摘要:调试电池的充放电管理,首先须要深入了解锂电池的电池原理和特点.充放电特性以及主要的电池安全问题.然后须要对MTK的电池管理驱动程序有深入的了解.理解电池充放电算法的基本原 ...
- React Native移动开发实战-5-Android平台的调试技巧
Android平台的调试和其他平台的调试也很类似,例如:在Android Studio打开的工程中,打开源码MainActivity.java,然后,将鼠标移至代码编辑区的左侧后,单击鼠标即可添加断点 ...
- 如何把rtl8188EUS驱动编译生成ko模块并且下载到rk平台Android4.2.2上使用
下了rtl8188EUS_linux_v4.3.24_16705.20160509.tar.gz,看了里面的数据手册,发现有些看不懂,上网搜了一下,发现大部分博客都在扯淡...后来还是我把Makefi ...
- LCD调试1.0
所谓调lcd timing就是去调lcd时序,一般是6个部分:HFPD(在一行扫描以前需要多少个像素时钟),HBPD(一行扫描结束到下一行扫描开始需要多少个像素时钟),VFPD(一帧开始之前需要多少个 ...
- LCD调试
(1) 液晶显示模式 并行:MCU接口.RGB接口.Vysnc接口 串行:SPI接口.MDDI接口 (2) 屏幕颜色 实质上即为色阶的概念.色阶是表示手机液晶显示屏亮度强弱的指数标准,也就是通常所说的 ...
- hud项目lcd调试过程的一些见解
1.帧缓冲(FrameBuffer)设备驱动帧缓冲设备为标准的字符型设备,在Linux中主设备号29,定义在/include/uapi/linux/major.h中的FB_MAJOR,次设备号定义帧缓 ...
- LCD 调试总结
(1) 液晶显示模式 并行:MCU接口.RGB接口.Vysnc接口 串行:SPI接口.MDDI接口 (2) 屏幕颜色 实质上即为色阶的概念.色阶是表示手机液晶显示屏亮度强弱的指数标准,也就是通常所说的 ...
随机推荐
- Java学习之流Stream理解(一)
缓存可以说是I/O的一种性能优化.缓存流为I/O流增加了内存缓冲区.有了缓冲区,使得在流上执行skip().mark()和reset()方法都称为可能. 1.BufferedInputStream 类 ...
- POJ-1861,Network,最小生成树水题,,注意题面输出有问题,不必理会~~
Network Time Limit: 1000MS Memory Limit: 30000K Special Judge http://poj.org/problem?id=1 ...
- CentOS6 CentOS7 yum安装图形界面
CentOS6 yum安装图形界面yum groupinstall -y "Desktop" "Desktop Platform" "Desktop ...
- 洛谷P1244 青蛙过河
P1244 青蛙过河 362通过 525提交 题目提供者该用户不存在 标签 难度普及- 时空限制1s / 128MB 提交 讨论 题解 最新讨论更多讨论 题目什么意思 题目看不懂啊 题目描述 有一条河 ...
- bzoj 1702 贪心,前缀和
[Usaco2007 Mar]Gold Balanced Lineup 平衡的队列 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 807 Solved: ...
- 《TCP/IP详解卷1:协议》——第6章 ICMP:Internet控制报文协议(转载)
1.引言 ICMP被认为是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息.ICMP报文通常被IP层或更高层协议(TCP或UDP)使用.一些ICMP报文把差错报文返回给用户进程. ICMP报 ...
- poj1330+hdu2586 LCA离线算法
整整花了一天学习了LCA,tarjan的离线算法,就切了2个题. 第一题,给一棵树,一次查询,求LCA.2DFS+并查集,利用深度优先的特点,回溯的时候U和U的子孙的LCA是U,U和U的兄弟结点的子孙 ...
- ZOJ 3471 【状态压缩DP】
题意: 有n种化学物质,他们彼此反应会有一种消失并释放出能量. 给出矩阵,第i行j列代表i和j反应j消失释放的能量. 求最大释放多少能量. 思路: 状态压缩DP,我是这么想的. 利用二进制0代表该物质 ...
- Nginx配置upstream实现负载均衡及keepalived实现nginx高可用
(原文链接:http://www.studyshare.cn/blog-front//blog/details/1159/0 ) 一.准备工作 1.准备两个项目,发布到不同的服务器上,此处使用2个虚拟 ...
- 使用微软的 ilasm 和 ildasm 对. net程序进行编译和反编译
为了保证示例的完整性,请先准备好一个 c#写的 exe 程序,或者可以使用我提供的 exe 程序也可以(很简单,为了测试这里仅生成了一个带按钮的 winform,单击按钮提示弹窗) Test WinF ...