LCD调试流程

2023-11-16

本来想学的更深入一些再来写这些总结,但想想,边学边写,记录成长过程也挺好的。

下面自底向上,了解LCD的整个工作流程。

一、LCD的组成结构和各结构的功能。

(1)、背光板模组:提供光的来源;

(2)、上下偏光板,TFT Glass Substrate,液晶:形成偏振光,控制光线的通过与否;

(3)、彩色滤光片:提供TFT LCD红、绿、蓝(光的三原色)的来源;

(4)、ITO透明导电层:提供透明的导电通路;

(5)、Photo Spacer:提供一固定高度給彩色滤光片和TFT Glass Substrate。作为灌入液晶时的空间.及作为上下两层Glass的支撑。

二、屏时序分析

(1)、上面时序图上各时钟延时参数的含义如下:

VBPD(verticalback porch):表示在一帧图像开始时,垂直同步信号以后的无效的行数。

VFBD(verticalfront porch):表示在一帧图像结束后,垂直同步信号以前的无效的行数。

VSPW(verticalsync pulse width):表示垂直同步脉冲的宽度,用行数计算。  

HBPD(horizontal back porch):表示从水平同步信号开始到一行的有效数据开始之间的VCL的个数。

HFPD(horizontal front porch):表示一行的有效数据结束到下一个水平同步信号开始  之间的VCLK的个数。

HSPW(horizontalsync pulse width):表示水平同步信号的宽度,用VCLK计算。

(2)、帧的传输过程

VSYNC信号有效时,表示一帧数据的开始,信号宽度为(VSPW +1)个HSYNC信号周期,即(VSPW +1)个无效行;VSYNC信号脉冲之后,总共还要经过(VBPD+ 1)个HSYNC信号周期,有效的行数据才出现; 所以,在VSYNC信号有效之后,还要经过(VSPW +1  + VBPD + 1)个无效的行;随即发出(LINEVAL+ 1)行的有效数据;最后是(VFPD + 1)个无效的行;

(3)、行中像素数据的传输过程

HSYNC信号有效时,表示一行数据的开始,信号宽度为(HSPW+ 1)个VCLK信号周期,即(HSPW+1)个无效像素;HSYNC信号脉冲之后,还要经过(HBPD+1)个VCLK信号周期,有效的像素数据才出现;随后发出(HOZVAL+1)个像素的有效数据;最后是(HFPD +1)个无效的像素;

(4)、将VSYNC、HSYNC、VCLK等信号的时间参数设置好之后,并将帧内存的地址告诉LCD控制器,它即可自动地发起DMA传输从帧内存中得到图像数据,最终在上述信号的控制下出现在数据总线RGB上。用户只需要把要显示的图像数据写入帧内存中。

以上参数可以在屏的datasheet里查到。

三、MTK平台驱动参数

    我们能做的工作是根据屏幕规格书调整时序参数。遇到具体问题,如果自己找不到问题的根源,可以找硬件和原厂FAE定位原因,你配合他们调整其他参数。

1、像素时钟的计算公式:

MTK平台有专门的excel表(`PLL setting.xlsx)来计算像素时钟。

2、其他的时序参数查看屏幕datasheet直接填入即可。

3、值得注意的是极性的设置:

A、首先看数据线,当开始传输第一个数据时,如果EN为下降沿,即传输Valid data 时EN低有效。则:Params->dpi.de_pol=LCM_POLARITY_FALLING; 反之亦然;

B、VSYNC和HSYNC分别代表一帧数据和一行数据的开始,当一帧以下降沿开始时,设置:Params->dpi.vsync_pol=LCM_POLARITY_FALLING; 反之亦然;当一行以下降沿开始时,设置:Params->dpi.hsync_pol=LCM_POLARITY_FALLING; 反之亦然。

C、PCLK的极性没有固定的要求,主要是看其与data的关系,即保证latch到正确的数据,这一点和sensor的PCLK设置相同。当开始传输第一个数据时,如果PCLK为下降沿,即在下降沿latch数据时,最好设置:Params->dpi.clk_pol=LCM_POLARITY_FALLING; 反之亦然。

 

四、调试LCD步骤

1、  点亮显示屏

 

1.1、查看log,(MTK平台关键字为“LCM Auto Detect”)确保LCD驱动加载成功。

 

1.2、用示波器查看DVDD、(AVDD、VGH、VGL、VCOM)(有些接口的屏内置了这些电压)各组电压值和上电时序是否符合规格书要求。如果电压值不对,需查看硬件原理图分析电压来源。可以找硬件协助分析。

 

1.3、用示波器查看reset脚拉起时序是否符合规格书要求。如果未拉起,可以查看硬件原理图,确定GPIO配置正确。如果拉起时序不对可在驱动中,做相应的延时和反复拉起操作。

 

1.4、查看硬件原理图确保背光使能脚的GPIO配置正确

 

1.5、用示波器查看是否有图像的差分信号,至此LCD应该能够正常点亮。

 

2、  调试休眠唤醒效果

 

2.1、根据规格书说明的上下电时序,用示波器检查DVDD,Reset,AVDD,VGL,VGH,背光使能脚的时序是否符合要求。如果不符合要求可以在驱动中调节相应的上下电顺序和加相应的延时。如果VGL,VGH上电时序不对,要找硬件更换相应的上下拉电阻或者电容。

 

2.2、确保休眠时先关背光,唤醒时最后开背光,效果比较好。

 

3、  调试显示屏显示效果

 

3.1、根据规格书配置以下参数:

FRAME_WIDTH、FRAME_HEIGHT、HSYNC_PULSE_WIDTH 、HSYNC_BACK_PORCH、HSYNC_FRONT_PORCH、VSYNC_PULSE_WIDTH、VSYNC_BACK_PORCH、VSYNC_FRONT_PORCH

 

3.2、根据规格书配置Dclock频率和极性,保证刷新率大于等于60hz

 

3.3、根据规格书配置图像数据的位数

 

3.4、微调VCOM电压值

 

3.5、用示波器查看AVDD是否存在纹波,如果存在找硬件协助加电容进行滤波。

 

3.6、用示波器查看Dclock的波形是否为正弦波,确保波峰,波谷的值符合LCD要求。典型的波峰需要大于等于0.7*DVDD,波谷小于等于0.3*DVDD,如果不符合要求找MTK协助,修改波形。

                   

五、常见问题
1、  屏不亮

参照点亮显示屏步骤查找原因。

 

2、  花屏

可能原因是VGH和VGL电压值不符合要求。可能是VGH,VGL端的限流电阻过大,导致VGH端的电流不够大。可以跟换限流电阻增强驱动能力。

 

3、  开机或者唤醒时,闪一下白屏

可能原因是背光亮早了。可以在背光亮之前加延时。

 

4、  开机后,随机出现花屏,白屏,黑屏的现象,进入主界面后,休眠唤醒又正常。

可能原因是开机时MT8193初始化失败。很有可能是touch panel 驱动IC和MT8193 共用一条总线,preloader 阶段,TP需要提前供电,否则会拉住I2C,导致MT8193初始化时 I2C通信超时,无法在预计的时间内正常初始化。可以优先给TP供电。

 

5、  将机器开着保持画面不动10分钟,出现残影现象。

可能原因VCOM电压不符合要求。可以尝试降低VCOM电压值。

 

6、  画面整体平移。

可能原因是分辨率设置不对或者帧场同步的极性不对。可以根据规格书修改分辨率和帧场同步的极性。

 

7、  画面一直有轻微的竖条纹。

可能原因是AVDD不干净有纹波,可以尝试加大电容滤波。

 

8、  显示屏颜色偏绿。

可能原因是提供背光的灯颜色偏绿。可以和供应商联系。

 

9、  背光有轻微的闪动。

可以尝试提高刷新率改善。

 

10、画面上出现蓝色噪点

可能原因是Dclock不符可要求导致像素丢失。解决方法请参照软件知识库m3g035显示屏蓝色噪点调试报告

 

11、休眠唤醒后出现概率性无黑屏花屏。

可能原因是VGH和VGL的电容在休眠之后放点时间不够,再唤醒时,电容仍在放电。导致LCD上电时序不对。可以尝试硬件上将VGL,VGH端的电阻换小,让电容放电时间缩短或者软件上,唤醒前,加延时。让电容放足电。
--------------------- 
作者:bigman_123 
来源:CSDN 
原文:https://blog.csdn.net/bigman_123/article/details/19070579 
版权声明:本文为博主原创文章,转载请附上博文链接!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LCD调试流程 的相关文章

  • 内核调试方法 三

    目录 大海里的鱼有很多 而我们需要的是鱼钩一只 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 第一部分 基础知识 总纲 内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和
  • linux0.00 代码阅读笔记

    汇编语言的编写 编译 运行 调试 author hjjdebug date 参考代码地址 GitHub hjjdebug linux0 00 linux0 00 code compiled under ubuntu14 04 gcc 4 8
  • Warning: Could not find file 。。。to copy.

    老师给了一个完整程序 但是没跑起来 我的做法是 点击跳转 删掉所在行 就可以了
  • 调试HX711

    体重电路板HX711 1 下载程序 如果不正常用万用表测量输出电压是否正常 看BOOT键是否打开 RX TX是否接对 2 首先确保程序正确 I O口对应正确 3 连接体重计 如果串口接收数据不正常 首先检查称重传感器连线问题 然后用万用表测
  • Eclipse出现Widget is disposed错误

    在Eclipse中切换正常磨损和Debug模式的时候出现了这种问题 可以通过关闭toggle breakcrumb 来屏蔽这种错误 如图所示
  • 如何解决段错误

    程序运行时崩溃应该是经常遇到的事情 本篇文中就来讲解一下在Linux下如何解决程序崩溃 也就是发生了段错误之后找到程序具体出错的地方 如果程序通过了编译 但是在使用命令 a out 运行时程序崩溃了 即显示 段错误 core dumped
  • 【Keil】warning: #550-D: variable "activeTaskID" was set but never used

    现象 warning 550 D variable activeTaskID was set but never used 描述 变量activeTaskID定义但从未使用 或者是 虽然这个变量你使用了 但编译器认为变量activeTask
  • linux下eclipse C++ 多线程调试

    初学linux编程 想要用linux下eclipse C 多线程调试 发现相关资料很少 所以想写一篇这样的文章 在这个页面看到 这里 If you use eclipse CDT you probably understand that e
  • Linux下嵌入式程序仿真调试(GDB)(二)

    目录 目录 前言 Ubuntu下Qt的GDB环境搭建未成功 Qt5的设置 命令行调试问题记录 总结 链接地址 前言 Linux下嵌入式程序仿真调试 GDB 一 主要介绍了GDB交叉调试环境的搭建过程 本想把交叉编译好的gdb程序放置到Qt中
  • 记录一次cpu 100%线上问题排查

    功能问题 通过日志 单步调试相对比较好定位 性能问题 例如线上服务器CPU100 如何找到相关服务 如何定位问题代码 更考验技术人的功底 最近做项目时碰到线上某台实例不时出现CPU 100 的报警 线上部署了若干tomcat实例 即若干垂直
  • eclipse学习心得

    1运行程序 在后台遇到断点时 进入debug调试状态 作用域 功能 快捷键 全局 单步返回 F7 全局 单步跳过 F6 全局 单步跳入 F5 全局 单步跳入选择 Ctrl F5 全局 调试上次启动 F11 全局 继续 F8 全局 使用过滤器
  • 绕过__chkesp堆栈检查

    前面很多注入相关的文章中都提到为了保证注入后原始程序能恢复正常的执行流 需要在编译器中关闭堆栈检查 为了解决问题 这是个好手段 但是不得不说这是回避问题 不是根本上解决问题 本文旨在解决这个问题 vs用 chkesp来实现堆栈检查 chke
  • Xcode8不能在iOS7上调试,Could not find Developer Disk Image的解决方法

    升级完Xcode8之后 默认情况下 是无法进行iOS7的调试的 因为Xcode8里面不再游iOS7的镜像文件 所以会提示 Could not find Developer Disk Image 解决方法如下 打开finder 应用程序 Xc
  • facebook stetho Android调试工具

    什么是Stetho 官网简介 Stetho is a debug bridge for Android applications enabling the powerful Chrome Developer Tools and much m
  • Visual Stdio调试IDAPython脚本

    1 安装VS插件PTVS 这一步与第2步中安装版本应该一致 否则最后调试时会连不上 https github com Microsoft PTVS 2 安装python模块PTVSD pip install ptvsd 3 写如下代码ptv
  • 在dos下使用debug被提示incorrect ms dos version的解决办法

    原创 在dos下使用debug被提示incorrect ms dos version的解决办法 首先可以确定一点 直接使用debug时它是直接在当前目录下寻找的 一旦当前目录下没有debug或debug版本不合适 则会出错 直接在 开始 中
  • 转载--Windows下比较两个不同版本的二进制文件

    接手前人的软件 发现主程序依赖的动态库文件的源码没有包含在工程里面 花了好长时间找到了源代码 但是不知道它是不是最新版本的源代码 发现现有用到的动态库有两个版本的 其中一个修改时间旧一点的动态库文件在源代码的Release目录中可以找到 可
  • Xcode5.1离线下载安装及使用iOS5模拟器进行开发调试的方法

    Xcode5 1默认不支持iOS5版本的模拟器开发调试 在OS X Mavericks 10 9 x 下默认只能支持iOS6 1及以上版本的模拟器 在OS X Mountain Lion 10 8 x 下默认只能支持iOS6 0及以上版本的
  • Web移动端-touch事件

    一 引入 在一个项目demo中 实现单指触控卡片的向任意方向的拖动效果 网上没有现成的插件 所以只好原生js来写 产品要求需要禁止掉多点触控 这个过程很让人头疼 试了很多方法 都不太实现 后来仔细研究 测试了一下移动端的三个常用事件 二 事
  • Python开发环境Wing IDE如何查看调试数据

    Wing IDE具有一个十分有用的特性 就是处理复杂bug的时候可以以各种各样的方式查看调试数据值 这个功能具体是由Watch工具实现的 查看数据值 在PrintAsHTML中发生异常时 右键单击Stack Data工具中的本地数值 这将显

随机推荐

  • 如何快速找到期刊文献的期卷号

    在我们撰写论文时不论是查找下载期刊文献资料还是编辑参考文献都会需要知道该期刊论文的期卷号 那么 期刊论文的期卷号怎么找呢 下面小编就介绍几种论文期卷号的查找方法 注 文中所用的检索工具是 文献党下载器 一 最常见的就是论文的期卷号在参考文献
  • Presto查询Hive无数据解决方法

    1 是否使用了TEZ引擎 2 是否配置好了presto 如果是TEZ引擎 则加上一条配置即可 在hive properties中增加 hive recursive directories true
  • “Required request body is missing”请求体缺失

    昨天遇到一个报错 是这样的 有一个接口 后端和我说是get请求 带两个参数 在body里传递过去 我当时明明带着参数一起发给后端了 但是一直报错 显示请求体缺失 关键的是我用postman测试了 接口是通的 我就以为是前端的问题 就在那改传
  • 伪代码格式

    伪代码描述应该保持简洁 并且不应该超过一页的3 4 关键字和函数名字用粗体字 所有的变量使用小写字母 数组名称大写 元素采用A i 这样的表示形式 伪代码的意图是描述条件语句和循环语句 例如 伪代码计算两个最近点的距离 BruteForce
  • Web自动化 —— Selenium元素定位与防踩坑

    1 基本元素定位一 from selenium import webdriver from selenium webdriver chrome service import Service from selenium webdriver c
  • Mac系统编译Spring源码

    下载Spring源码 Spring源码托管在GitHub 点击进去之后 选择一个版本 然后下载 下载完成后 解压压缩包 然后打开spring framework 5 2 x gradle wrapper gradle wrapper pro
  • ARM学习系列 ---- ARM NEON

    ARM学习系列 ARM NEON 1 NEON概述 1 1 简介 NEON是指适用于Arm Cortex A系列处理器的一种高级SIMD 单指令多数据 扩展指令集 可执行并行数据处理 1 2 发展历史 arm v6 SIMD扩展 arm v
  • 计算器ajax实现代码,用JQuery写一个计算器

    因为觉得segment fault的markdown界面比CSDN漂亮一些 所以最近正在把博客迁移到这边来 这几天多发了两篇 作为一个学习中练手的小demo 选了一个计算器 原因大概只是因为早就想做 比较简单 又确实有很多地方不太清楚 所以
  • PAT 1011 A+B 和 C

    给定区间 2 31 2 31 内的 3 个整数 A B 和 C 请判断 A B 是否大于 C 注意本题数字的范围 是 2 31 2 31 因此要用long long 类型 刚开始用了int 类型 一直提示有错误 注意int 32位 可以包括
  • 开发规范-java代码注释及IDEA配置代码注释模板

    引 阿里巴巴开发规范 注释规约 强制 类 类属性 类方法的注释必须使用 Javadoc 规范 使用 内容 格式 不得使用 xxx 方式 说明 在 IDE 编辑窗口中 Javadoc 方式会提示相关注释 生成 Javadoc 可以正确输出相应
  • python正则表达式从字符串中提取数字的思路详解(转载)

    python从字符串中提取数字 使用正则表达式 用法如下 总结 匹配字符串的开始 匹配字符串的结尾 b 匹配一个单词的边界 d 匹配任意数字 D 匹配任意非数字字符 x 匹配一个可选的 x 字符 换言之 它匹配 1 次或者 0 次 x 字符
  • Unity - 无限循环列表

    效果和UI结构 效果 Tips 免费的视频转GIF网站 UI结构 父节点为一个Panel Panel的Vertical Layout Group方便快捷调整Panel下的Image子物体的位置 使用时取消组件 Image是列表的子物体 只有
  • CSS文字自动换行

    word break属性 normal 只在允许的断字点换行 浏览器保持默认处理 break word 在长单词或 URL 地址内部进行换行 white space属性 normal 默认 空白会被浏览器忽略 pre 空白会被浏览器保留 其
  • Java编程那些事儿88——文件操作之写文件

    Java编程那些事儿88 文件操作之写文件 陈跃峰 出自 http blog csdn net mailbomb 11 3 1 4 写文件 如前所述 将程序内部的数据输出到程序外部的数据源 应该使用IO类体系中的输出流 在实际的编程中 将程
  • MATLAB设计滤波器之新版filterDesigner使用

    一 引言 本篇内容主要介绍新版Matlab的滤波器设计filterDesigner工具的使用 并以设计两个带通滤波器为使用的例子 使用的MATLAB软件版本为MATLAB R2022a 二 filterDesigner设计滤波器 1 在命令
  • C++责任链模式:Chain of Responsibility Pattern

    当你想要让一个以上的对象有机会能够处理某个请求的时候 就可以使用责任链模式 责任链模式 将请求的发送和接收解耦 让多个接收对象都有机会处理这个请求 将这些接收对象串成一条链 并沿着这条链传递这个请求 直到链上的某个接收对象能够处理它为止 通
  • Ubuntu18.04装Miniconda后终端出现base环境

    在 Ubuntu18 04LTS DELL 台式机中安装 Pytorch 由于没有 GPU 只能下载仅使用 CPU 版的 Pytorch 去 Pytorch 官网按照文档 Start Locally PyTorch 一步步下载相应的环境 P
  • tomcat8下启动 jsp报错

    The method getDispatcherType is undefined for the type HttpServletRequest java lang ClassNotFoundException org apache js
  • PLSQL中的FOR循环

    游标的FOR循环 循环体是查询的表 游标的for循环 PL SQL 语言提供了 游标 FOR 循环语句 自动执行游标的 OPEN FETCH CLOSE 语句和 循环 语句的功能 当进入循环时 游标 FOR 循环语句 自动 打开游标 并提取
  • LCD调试流程

    本来想学的更深入一些再来写这些总结 但想想 边学边写 记录成长过程也挺好的 下面自底向上 了解LCD的整个工作流程 一 LCD的组成结构和各结构的功能 1 背光板模组 提供光的来源 2 上下偏光板 TFT Glass Substrate 液