LCD调试
(1) 液晶显示模式
并行:MCU接口、RGB接口、Vysnc接口
串行:SPI接口、MDDI接口
(2) 屏幕颜色
实质上即为色阶的概念。色阶是表示手机液晶显示屏亮度强弱的指数标准,也就是通常所说的色彩指数。目前彩屏手机的色阶指数从低到高可分三个层次,最低单色,其次是256色、4096色、 65536色;目前最高的为26万色。256=2的8次方,即8位彩色,依次律推,65536色=2的16次方,即通常所说的16位真彩色,26万=2的18次方,也就是18位真彩。其实65536色已基本可满足我们肉眼的识别需求。
(3) 分辨率
LCD的分辨率与CRT显示器不同,一般不能任意调整,它是制造商所设置和规定的。分辨率是指屏幕上每行有多少像素点、每列有多少像素点。手机上LCD的分辨率一般是176点×220行的QCIF显示模式和240点×320行的QVGA显示模式。
(4) 刷新率
LCD刷新频率是指显示帧频,亦即刷新一帧屏所需要的时间,与屏幕扫描速度及避免屏幕闪烁的能力相关。也就是说刷新频率过低,可能出现屏幕图像闪烁或抖动。
(5) 可视角度
指从不同的方向清晰地观察屏幕上所有内容的角度,这与LCD是DSTN还是TFT有很大关系。因为前者是靠屏幕两边的晶体管扫描屏幕发光,后者是靠自身每个像素后面的晶体管发光,其对比度和亮度的差别,决定了它们观察屏幕的视角有较大区别。DSTN-LCD一般只有60度,TFT-LCD则有160度。
(6) 响应时间
响应时间愈小愈好,它反应了液晶显示器各象素点对输入信号反应的速度,即pixel由暗转亮或由亮转暗的速度。响应时间越小则使用者在看运动画面时不会出现尾影拖拽的感觉。一般会将反应速率分为两个部份:Rising 和Falling,而表示时以两者之和为准。
2. 接口形式:
(1) 并行方式
a、MCU接口
目前主要有i80和m68两种类型。这种LCD模式须LCD有自己的GRAM。
b、RGB接口:
通过时钟同步来实现同步传输,此模式不需要LCD有GRAM来缓存数据。接口如下:
(2) 串行方式
a、SPI接口:
目前手机各个平台无使用此接口方式。接口如下:
b、MDDI接口:
高通公司的一种接口形式,具有传输速率高、抗EMC性能好、降低功率损耗等特点。
3. 调试注意事项:
(1) 硬件
测量硬件信号,保证硬件状态的正常:
a、背光是否打开?
LCD是否出于白屏状态?
b、数字电压和IO电压是否产生?
一般IC,数字电压为2.8V,IO电压为1.8V
c、reset信号是否有效过?
reset信号一般低有效,低有效时间看IC spec要求。
d、控制信号是否输出?
CS、RS、WR信号是否有输出
e、数据线上是否输出?
数据线是8bit、16bit还是18bit,是否有输出?
(2) 软件
手机软件系统虽不象计算机软件系统那样复杂,但同样具有类似的构架:操作系统+应用程序。
目前操作系统,一般是一个任务抢占式实时操作系统,使用中断陷阱、信号、队列等概念组织各项任务(应用程序)的建立、执行、切换。在操作系统的管理下,各项任务看似是并行运行的。
对于驱动调试需要进行两方面的工作,第一熟悉手机软件结构,第二研究新的外设功能,编写新驱动并集成到手机软件中。对于LCD驱动,目前各个平台软件上已经集成此模块代码,我们需要在此基础上进行代码调整和功能验证。
a、LCD的物理地址分配
查看主芯片memory分配,在代码实现上指定命令和数据传送的端口地址。
b、LCD命令和数据格式
根据实际的硬件设计及IC要求,决定LCD命令和数据的传输方式,保证指令和数据能有效的从主芯片侧传递到LCD IC。
c、LCD指令含义
熟读LCD IC spec,了解寄存器配置含义,理解LCD的控制方式和工作方式。
d、开关屏序列
了解POWER ON顺序和POWER OFF顺序
e、背光驱动的控制方式
电流驱动还是电压驱动?
f、LCD模块ID识别的方法
硬件电路是否支持?若无,软件如何识别?
4. 常见问题总结:
LCD的调试中,延时特别重要,一定要确定延长的时间足够,特别是更改电压寄存器后面的延时。记得有一次屏幕出现抖动的现象,一直查不出原因,厂家来人,都没解决;最后,把所有的时序测试出来,发现延时不足,影响延时的一个函数传递参数错了。
1.初始化前需要一个延时(大概为10ms),使Reset稳定;
2.如果出现花屏现象,很大的可能是总线速度问题;
3.如果屏幕闪动比较明显,可以通过调整电压来稳定,一般调节的电压为VRL、VRH、VDV和VCM;这些电压也可以用来调节亮暗(对比度);
4.调节对比度时,也可以通过调节Gamma值来实现,要调节的对象为:PRP、PRN、VRP、VRN等;
5.注意数据是8位、16位时,写命令和数据的函数注意要变化;
6.如果调试时发现LCD的亮度有问题,首先检查(考虑)提供给LCD的电流是否一致,再考虑调节电压。
7.开机花屏问题,最简单的处理方式就是在INIT结束的地方增加一个刷黑屏的功能。也可以在睡眠函数里加延时函数;
8. 如果随机出现白屏问题,一个可能是静电问题,把LCD拿到头发上擦几下,如果很容易出现白屏那肯定就是静电问题了。另外一个在有Backend IC的情况下,也有可能bypass没处理好。
9.还碰到过一个问题,写PLL的寄存器写了2次,屏幕就抖动的很厉害。这个问题应该跟LCD内部实现有关了,并不是每个都会。
10.横向抖动,看不清画面,修改ENTRY MODE
11.如果字体反了,修改drive output control ,GS,SS;
12.如果图像刷新上面的字体跑到下面等,区域刷新没处理好;
13.如果图像分开显示,起始点不在原点,多半是全屏刷新起始点寄存器没有设好;
14.DMA刷新方式,每次刷新为一行,只能一次刷一整行,不然会出错,减少了循环计算时间,提高了LCD的刷新速度,也就减少了响应时间;
15.PWM的频率
对于LCD的背光来说,一般做法是通过升压芯片来提供对电压的支持。而这些升压芯片都会有PWM输入PIN,通过PWM来调节背光的明暗度。不过有时候我们会发现背光调节幅度陡然增大缩小,或是背光不足够亮(相对于作为GPIO PIN输出HIGH来说),但是通过万用表测量PWM输入,电压降的幅度都是处于正常情况下,这时候我们不妨调低PWM的输出频率。因为有很多升压芯片对PWM的频率都会有要求,将频率调至datasheet中标示的范围,一般都能解决此问题。
16.LCD的星星点点
在调试的时候,我们会发现LCD上有莫名其妙的星星点点。一般这种情况下,我们首先要看看VGH和VGL电压是否处于datasheet所描述的范围之内。如果属于标准范围之内,但星星点点依旧,很有可能就是时序问题。这时候不妨在代码中变更采样的时序(比如上升沿采样改为下降沿采样)。如果无法在代码中更改,也可以在clk信号线加个100R电阻,也可能解决该问题。
17.背光的反馈电压
升压芯片的输出电压需要反馈,如果没有接LCD的话,那两个极性的电压是无法出来的。线路中的二极管也是属于易损的类型,背光不亮很多情况是该二极管坏掉。反馈中的电阻如果没有计算正确,那么很可能反馈电压会超出预料,从而导致损坏LCD。
18.显示抖动
在确认VPW,VBP,VFP,HPW,HBP,HFP的设置已经符合LCD规格要求后,如果屏幕的显示还在抖动的话,不妨将输出的时钟信号频率降低,有可能解决该问题。
19.一些英文的缩写
VPW: Vsync Pulse Width
VBP: Vsync Back Porch
VFP: Vsync Front Porch
HPW: Hsync Pulse Width
HBP: Hsync Back Porch
HFP: Hsync Front Porch
网上资料:
今天调LCD出现在这样的问题,就是显示图像时,在明暗颜色过渡间,会出现一些亮点,有时还不停的闪动,谁遇到过这样的情况呀?是硬件的问题还是软件可调呀?
我调整pixel clock 极性,由上升沿采样改由下降沿采样就没事了.不知怎么回事
2 LCD有水波纹一般什么问题
个信号short到地,可以看一下板子是否受到干扰,比如电源或晶振部分,再一个是否你输出至LCD 的信号线走的有问题,看看电源和背光电压是否有纹波,检查一下LCD周边外围电路的电阻、电容、电压是否很干净。
这个主要是在信号输入时右能出现于拢,信号线之间、地线与信号线之间出现了信号的反射或于拔;还有一种情况就是摄像头控制IC不稳定,输出的控制信号不稳或有毛剌
1,背光芯片输出的纹波:检查charge pump(dc-dc)电路,替换为合适的滤波电容;
2,LCD driver 电源管理:
(1)3级chargepump之间确保有足够的时间延迟,不同的系统这个要调整;
(2)chargepump的输出端要加足够大的滤波电容,具体选择看波形
3,修改driver ,主要是有关显示周期方面方面的寄存器设置
肯定是背光电源module的问题,估计你采用的是PWM方式控制屏的亮度!
这种纹波产生的原因是LCD的刷屏频率与白光灯的频率频差小于20Hz造成的,就像在日光灯下看高速旋转的电风扇叶子的影响一样!好解决,要软件调一调PWM的频率,运气好就可以解决问题,如果LCD的刷频不是很稳定,就不能100%解决问题了
于LCD条纹的问题:
1、条纹的宽度,较宽的条纹一般跟背光有较大的关系
2、有些LCD在晃动时,由于视角的变化,逐行扫描比较明显,这种情况跟有些driver IC有关系,只能通过修改参数优化
3、参数没有调试好,涉及扫描频率、驱动行列的电压有关!
4手机 LCD&Camera ESD 问题
Air Display, Standalone(Isolated), Preview mode( Camera on)
手机为单板(不是折叠或者滑盖)
如果手机屏朝上,+-10kV pass;
但手机朝下,+-3kV就花屏了
试试屏向下把手机垫起离开桌面一定距离还有没有问题,如果好了,就找一下放电回路,可能是手机屏的控制电路与金属板距离短了后,电容增大,阻抗减小,本来可以从其它路径放掉的电,从这个电路走了,想办法提高这个路径的阻抗或为放电电流提供一个其它的低阻抗通路。
5 调试LCD出现花屏
1)信号的时序,尤其是RS,很大可能是送的数据被认为是指令而出错了。
2)复位信号的时机、时长,复位信号变高到送数据的时间足够。
3)初始化的指令先后顺序、正确性。
4)初始化时高压的打开是否符合规格式要求?
外部引脚信号:
VSYNC: 垂直同步信号,表示扫描1帧的开始。
HSYNC: 水平同步信号,表示扫描1行的开始。
VDEN:数据使能信号。
VD[23:0] : LCD像素数据输出端口。
VCLK:像素时钟信号。
寄存器参数:
VSPW:垂直同步信号的脉宽,单位为1行(Line)的时间。
VFPD: 垂直同步信号的前肩,单位为1行(Line)的时间。
VBPD: 垂直同步信号的后肩,单位为1行(Line)的时间。
LINEVAL :垂直显示尺寸-1,即屏行宽-1。
HBPD:水平同步信号的后肩,单位为1VCLK的时间。
HFPD:水平同步信号的前肩,单位为1VCLK的时间。
HSPW:水平同步信号的脉宽,单位为1VCLK的时间。
HOZVAL:水平显示尺寸-1,即屏列宽-1。
由上图可知:
扫描一帧所需的时间:
=((VSPW+1)+(VBPD+1)+( LINEVAL+1)+(VFPD+1))个行时间。
扫描一行所所需的时间:
= ((HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1))个VCLK时间。
而一个VCLK时间由LCD寄存器LCDCON1内的CLKVAL决定:
=HCLK/[2*(CLKVAL+1)]
因此扫描一帧所需的时间:
T=[(VSPW+1)+(VBPD+1)+( LINEVAL+1)+(VFPD+1)]* [(HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1)]* HCLK/[2*(CLKVAL+1)]
即帧频率为:1/T
---------------------
作者:wangubuntu
来源:CSDN
原文:https://blog.csdn.net/wangubuntu/article/details/21052233
版权声明:本文为博主原创文章,转载请附上博文链接!
LCD调试的更多相关文章
- RK平台LCD调试说明【转】
本文转载自:http://blog.csdn.net/u014770862/article/details/76274951?locationNum=2&fps=1 RK平台LCD调试说明 原 ...
- LCD调试1.0
所谓调lcd timing就是去调lcd时序,一般是6个部分:HFPD(在一行扫描以前需要多少个像素时钟),HBPD(一行扫描结束到下一行扫描开始需要多少个像素时钟),VFPD(一帧开始之前需要多少个 ...
- hud项目lcd调试过程的一些见解
1.帧缓冲(FrameBuffer)设备驱动帧缓冲设备为标准的字符型设备,在Linux中主设备号29,定义在/include/uapi/linux/major.h中的FB_MAJOR,次设备号定义帧缓 ...
- LCD 调试总结
(1) 液晶显示模式 并行:MCU接口.RGB接口.Vysnc接口 串行:SPI接口.MDDI接口 (2) 屏幕颜色 实质上即为色阶的概念.色阶是表示手机液晶显示屏亮度强弱的指数标准,也就是通常所说的 ...
- hud项目lcd调试
lcd规格: 像素:480x280 bpp:16 pix_format:RGB565 在开发板终端中执行: ls /dev/fb0 -l ---> crw-rw---- 1 root ...
- 高通平台 lcd driver 调试小结
一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2 开发环境 And ...
- LCD之mipi DSI接口驱动调试流程【转】
转自:http://blog.csdn.net/liwei16611/article/details/68146912 1.LCD MIPI DSI协议 MIPI-DSI是一种应用于显示技术的串行接口 ...
- 高通LCD驱动调试
本文转载自:http://www.itgo.me/a/x6305658852004979994/lcd%20qcom 来自 :http://blog.csdn.net/dacaozuo/article ...
- android系统平台显示驱动开发简要:LCD基本原理篇『一』
平台信息:内核:linux3.4.39系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新浪博客 ...
随机推荐
- mybatis sql in not in的使用
xml配置 <select id="SelectAllByNotsampleNo" resultMap="BaseResultMap" parameter ...
- win10 开发mfc 64位 ocx控件
问题1.模块“XXX.ocx”加载失败 解决办法:项目--〉属性--〉常规-〉配置类型-〉 动态库(.dll) 修改为 静态库(.lib) 问题2.1>x64\Release\stdafx.o ...
- Day05 -寻找自己:Ruby的self物件与singleton method
前情提要:在第四天里,我们用参赛者的例子解说实体方法与类别方法.类别中的实体物件,想要玩弄方法时,可以有三种取用方式:(跟斯斯有三种一样) 该类别所定义的实体方法. 模块中可取得的实体方法.(关于模块 ...
- 关于新版oracle不支持wm_concat函数的解决办法
oracle12G中不支持wm_concat,就改用:listagg(合并字段,'连接符号') within group (order by 字段) 来实现列转行
- java operate
class OperateDemo { public static void main(String[] args) { /* + - * / %(取余数) */ int x = 2810; Syst ...
- C语言作业04-数组
1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 通过本章的学习,学会了几种用于循环的语句,能够利用循环解决复杂的问题,但对于几种循环的使用并不熟练,其中对于c ...
- docker学习-lnmp+redis之搭建lnp容器服务
nginx+php7.0容器服务 本来想用单独的容器(nginx和php分开),但是因为是初学,php容器安装扩展的时候一直失败,所以就把centos+nginx+php放一起搭建了,优点是扩展简单, ...
- get() got an unexpected keyword argument
TypeError: get() got an unexpected keyword argument 'news_id'ERROR basehttp 154 "GET /news/3/ H ...
- cnpm install -g live-server 安装服务
cnpm install -g live-server 指令会在浏览器自动打开页面
- UBuntu16.04 安装docker
1.首先更新apt-get源,sudo apt-get update 2.再通过pip安装docker-compose 3.然后再安装docker.io,sudo apt install docker ...