LCD调试

LCD调试:

        虽然我们多数驱动人员最开始都是从调试LCD开始入手的,但准确来说,LCD算是外设当中最难调试的东西了,之所以这么说,是因为LCD涉及到的接口类型和各种显示问题最多了。其中有CPU接口、RGBMipi之类的接口。那么,遇到这些接口怎么办?

         其实我们现在的调试LCD,算是很表层的,没有深入的去学习接口的类型,各种控制信号的作用,换一个接口很可能就不知道怎么进行下去了。在这里先只说流程和所遇问题,对于接口的学习,可以多查查资料。

         LCD调试难度高的另外一点就是所遇问题的多种多样,以下整理了一些常见问题:

1、  开机花屏、唤醒花屏——在初始化末尾和唤醒当中加入刷黑屏的动作;

2、  屏幕显示反色——LCD的颜色设置是RGB还是GBT、默认选择白屏还是黑屏;

3、  色彩显示错乱、花屏——LCD的数据线的位数选择是否与原理图一致;

4、  屏幕左右、上下颠倒——修改drive output control ,gs,ss

5、  图像显示不全,起始点不对——对一下分辨率设置和数据刷新区域是否配对;

6、  读不到ID——首先确认此ICID,然后校对reset的极性,延长resetdelay时间;

7、  能读到ID,显示白屏——可能是静电干扰,可以换屏或者不要将屏放到主板上再看看,此外如果是backend icbypass也要检查看看;

8、  背光闪烁——量PWM信号频率,看与屏是否有干扰,检查背光芯片的供电能力是否满足要求;

9、  某些画面下,LCD显示星星点点——时序设置是否有问题,会不会太快;


LCD调试中的常见问题以及注意事项 

功能:Init、SleepIn、SleepOut、DisplayOn、DisplayOff
注意事项:
LCD的调试中,延时特别重要,一定要确定延长的时间足够,特别是更改电压寄存器后面的延时。记得有一次屏幕出现抖动的现象,一直查不出原因,厂家从日本派了2次来人,都没解决;最后,把所有的时序测试出来,发现延时不足,影响延时的一个函数传递参数错了。
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.

 


网上资料:
 今天调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)[52RD.com]
手机为单板(不是折叠或者滑盖)[52RD.com]
如果手机屏朝上,+-10kV pass;[52RD.com]
但手机朝下,+-3kV就花屏了
试试屏向下把手机垫起离开桌面一定距离还有没有问题,如果好了,就找一下放电回路,可能是手机屏的控制电路与金属板距离短了后,电容增大,阻抗减小,本来可以从其它路径放掉的电,从这个电路走了,想办法提高这个路径的阻抗或为放电电流提供一个其它的低阻抗通路。
5 调试LCD出现花屏
1)信号的时序,尤其是RS,很大可能是送的数据被认为是指令而出错了。

2)复位信号的时机、时长,复位信号变高到送数据的时间足够。

3)初始化的指令先后顺序、正确性。

4)初始化时高压的打开是否符合规格式要求?

ssd2828-rgb-arrangement

 

 

 

软件

//@RGB interface configuration 
//HorizontalBackPorch
//指有效行间 行同步信号(HSYNC)开始 到有效数据开始之间的DCLK的CYCLE个数 包括同步信号区
//Horizontal Sync Pulse Width
//指行同步信号的宽度 单位为1个dclk的时间(即是1个datacycle的时间)
//Vertical Back Porch
//指场同步信号(VSYNC)开始,到有效数据行开始之间的行数 包括场同步信号区
//Vertical Sync Pulse Width
//指场同步信号的宽度 单位为行
//@MIPI lane configuration
//@CABC brightness setting
//@Communicate with LCD driver through MIPI 
//@PLL configuration
delay(2000);
/* @group LCD driver initialization */
//MIPI lane and PLL configuration 
//Send command and data through MIPI
delay(2000);
/@ group Access video mode */
//RGB interface configuration 
//MIPI lane configuration
//CABC brightness setting 
delay(200);
//PLL configuration

 

读取 SSD2828 Device ID

  • Register Address: 0xB0
  • Reset Value: 0x2828

 

注意事项

应用笔记

  • 如果不使用 SPI 接口, CSX (Pin 59) 要设置为 HIGH
  • SPI Interface 8 bit 4 Wire
  • PCLK 的波形信号质量不好的时候容易出问题,一般用 TX_CLK (晶振)。
  • B1-B6 寄存器配置正确之后才能接收到正确的RGB信号。

D-PHY

传输模式

  • LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHz
  • HS(High-Speed)模式:用于高速传输数据,速率范围 [80 Mbps, 1Gbps] per Lane

传输的最小单元为 1 个字节,采用小端的方式及 LSB first,MSB last。

2、Lane States

  • LP Mode 有 4 种状态: LP00、LP01(0)、LP10(1)、LP11 (Dp、Dn)
  • HS Mode 有 2 种状态: HS-0、HS-1

HS 发送器发送的数据 LP 接收器看到的都是 LP00,

3、Lane Levels

  • LP: 0 ~ 1.2V
  • HS: 100 ~ 300mV,HS common level = 200mV,swing = 200 mv

4、操作模式

在数据线上有 3 种可能的操作模式:Escape mode, High-Speed (Burst) mode and Control mode,下面是从停止状态进入相应模式需要的时序:

  • Escape mode 进入时序:LP11→LP10→LP00→LP01→LP00,退出时序:LP10→LP11

当进入 Escape mode 需要发送 8-bit entry command 表明请求的动作,比如要进行低速数据传输则需要发送 cmd: 0x87,进入超低功耗模式则发送 cmd: 0x78。在 DSI 中 LP 通讯只用 Data Lane 0。

  • High-Speed mode 进入时序:LP11→LP01→LP00→SoT(0001_1101),退出时序:EoT→LP11,时序图如下:

 

Turnaround 进入时序:LP11→LP10→LP00→LP10→LP00,退出时序:LP00→LP10→LP11

这是开启 BTA 的时序,一般用于从 slave 返回数据如 ACK: 0x84。

5、时序要求

在调试 DSI 或者 CSI 的时候, HS mode 下的几个时序非常重要:T_LPX,T_HS-SETTLE ≈ T_HS-PREPARE + T_HS-ZERO,T_HS-TRAIL,一般遵循的原则为:Host 端的 T_HS-SETTLE > Slave 端的 T_HS-SETTLE。

二、DSI

1、线路构成

  • 在 DSI 中需要 1 根时钟线以及 1 ~ 4 根数据线。

2、两种接口的 LCD

  • Comman mode(对应 MPU 接口)
  • Video mode(对应 RGB 接口)该模式下视频数据只能通过 HS mode 传输

故障排查

  • 唤醒慢的问题

在最初调试的几款 LCD 里面初始化 cmd 都比较少,后来在调试一款 IPS 屏的时候发现唤醒需要 3 秒左右,这款 LCD 初始化 cmd 有100多条,之前在调试一款 LCD 的时候每条 cmd 发送之后需要 delay 10ms 再发下一条 cmd,所以在这款 LCD 这里不能有 delay,并且经过调试在确保发送成功的情况下将 LP 的传输速度提高了 3 倍(这里需要读取每条 cmd 的返回值 0x84 确认命令是否发送成功),优化后唤醒时间不到 1 秒。

  • LCD 参数理解更正

才发现之前一直对 LCD 的几个参数 HFP、HBP、VFP、VBP 理解有错误,正确的应该是以同步信号(HSYNC、VSYNC)为基准,在同步信号之前的称为 Front,在同步信号之后的称为 Back,而不是之前理解的以有效像素为基准。

  • LCD 显示呈锯齿状问题

这两天(12.11)还调试了一款 540 x 960 分辨率的 mipi LCD,在开始的时候一直点不亮,和供应商确认了好久无意间才发现是他们给的初始化代码是错的,使用正确的初始化代码就能点亮了,不过显示出来的图像却是呈锯齿状的,即没有对齐。之前在别的平台也遇到过类似问题,也就是分辨率不是 16 的整数倍,LCD controller 在取数据的时候会对不齐。边研究 Datasheet 边和 ASIC 同事讨论,后来确定了一个方案:即在 DSI、LCD 寄存器里面设置分辨率为 540 x 960 以让 LCD 正确识别信号,但 framebuffer 需要设置为 544 x 960 以对齐,并且设置 Source pitch 寄存器为 544,这样显示就正常了,相当于 framebuffer 里每一行的最后 4 个 pixel 会被 LCD controller 丢掉。

今天(12.12)在和 ASIC 同事的讨论下更正了之前的理解:LCD controller 在计算取数据的时候,地址是根据(x,y)坐标来算的,差不多是address = y * pitch + x + base,pitch 就是一行 pixel 在内存里的大小,这个至少是要对齐到 8byte, 因为 bus 宽度是 8byte,如 Data sheet 中的描述 ”Source pitch for RGB channel, QWORD aligned if linear mode“。之前计算 pitch 值的公式为:xres / 8 * bits_per_pixel / 8,如果 xres = 540,bits_per_pixel = 32,计算的结果因为取整的原因为 0x10c,实际上正确的值应该是 0x10e,所以需要将公式改为:xres * (bits_per_pixel / 8) / 8,即在每个像素占 4byte 的情况下只要 xres 为偶数就可以满足对齐的要求,而不用改为 544。


  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值