准备工作:

  LcdTools+PX01点亮需调Flicker的屏;F118 Flicker探头,用于自动Flicker校准测量,F118连接PX01上电后,探头屏会提示零点校准,此时需盖住探头窗口再按探头“MODE”按键进行零点校准,校准完毕后就可以正常使用了;IC资料,需要了解vcom读写、烧录次数读取方法以及烧录流程。

  

  

  下图为PX01+F118搭配各种接口屏进行自动Flicker的示意图

  

LcdTools实现用PX01自动Flicker及vcom烧录,主要分以下几步:

1、  先弄清楚Flicker画面是用什么,即屏支持在什么Flicker画面下进行vcom校准;常见的Flicker画面有如下几种。

   

  PX01内置大量Flicker画面,如果需要的Flicker画面PX01内置没有,请用图片实现。

2、看IC资料,弄清楚vcom读写怎么实现,实现这个就可以实现调Flicker。实现写vcom函数void SetVcomToLcm();实现vcom读取函数void ReadOtpVcom();

3、看IC资料,弄清楚烧录次数怎么读取;实现烧录次数读取函数void ReadOtpTimes();

4、查看vcom烧录流程资料,实现烧录函数;如果没有,跟客户索取;实现烧录函数void BurnOtp()。

  

下面实例介绍使用LcdTools通过PX01对屏进行自动Flicker调整及vcom烧录的详细过程;实例采用的屏视频口为LVDS,分辨率为1024x600,数据通信口为SPI,Drvier IC为JD9168。

1、  先确认Flicker画面,设置PX01自动Flicker校准需使用的Flicker画面,在“测试设置”栏“VCOM OTP”下,“FLK画面”下拉进行画面选择;

  

  从屏原厂了解到所需的Flicker画面如下图,PX01内置画面不支持;

  

  我们用图片实现,把Flicker图片转成相应分辨率bmp图片,命名为F01.bmp,存到PX01 SD中,并在LcdTools自动Flicker“测试设置”栏设置相应的Flicker画面为Picture 1。

  

2、  完成vcom读写函数编写,实现vcom写入屏和从屏中读取出来;查看IC资料,这里提一下这个JD9168 SPI的读写指令构成。

  a) SPI写(命令+数据),从IC资料可以看出SPI写数据构成如下:

  

  SPI通信为3线8位模式;发送寄存器(命令)和数据前,需要发送相关SPI 写命令位置、数据位置、数据个数、命令地址和数据;如切到PAGE0,DEh写00h;

  

  实际要发送的数据为:F1h(spi wr index) 01h(data index) 01h(data cnt) DEh(cmd) 00h(data),用LcdTools编写指令为:SpiWrite(WIRE3,BIT8,1,0xF1,0x01,0x01,0xDE,0x00);

  写纯命令,即数据个数为0,不带参数,如写命令29h,实际发送数据为:F1h(spi wr index) 01h(data index) 00h(data cnt) 29h(cmd),用LcdTools编写指令为:SpiWrite(WIRE3,BIT8,1,0xF1,0x01,0x00,0x29);

  b) SPI读(命令+数据+读取数据),从IC资料可以看出SPI读数据构成如下:

  

  读取寄存器值前,需要发送SPI 读命令位置、数据位置、数据个数、命令地址,然后再读取返回数据;如读取B2h寄存器3个参数,实际发送数据为:F2h(spi rd index) 01h(data index) 03h(data cnt) B2h(cmd),发送完后开始接收3个读取值,用LcdToos实现指令为:SpiRead (WIRE3,BIT8,DUMMY0,4,0xF2,0x01,0x03,0xB2, 3); 请注意以下几点,使用LcdTools SPI读取指令,如果发送完到开始接收读取参数之间没有空时钟打拍,dummy时钟参数请选用”DUMMY0”;第4个参数表示需发送数据的个数;最后一个参数表示读取参数的个数。

  言归正传,我们先实现vcom写函数SetVcomToLcm(),参考IC资料可以了解,vcom位于B2h寄存器,9bit模式;

  

  所以写的时候我们需要把vcom拆分成高字节bit[8]和低字节bit[7:0],实现方法如下:

  

  实现vcom写函数SetVcomToLcm()后,我们就可以实现修改vcom而改变屏Flicker闪烁度,怎么确认vcom修改是否有效呢?LcdTools连接PX01点亮屏后,切到“测试设置”栏,设置好Flicker画面,点击“设置为当前FLK画面”按钮使屏显示Flicker画面,在vcom栏写入需要写入的vcom值(十六进制),再点击写入,重复尝试修改vcom值写入,看屏Flicker画面闪烁是否有变化,如果有,说明vcom写入生效。

  

  再实现vcom读函数ReadOtpVcom(),就可以知道屏当前的vcom值是多少,而且在PX01自动Flicker校准烧录vcom后,可以读取出来对比是否烧录OK;从寄存器描述可以知道,vcom参数为9bit,分两个字节,bit[8]在para1最低位,bit[7:0]为para2,读取para1 para2后需拼接成9bit数据赋值给vcom变量。

  实现方法如下:

  

  验证读取是否OK方法,编译下载后,在“测试设置”栏“VCOM OTP”栏下点击“读取”按钮进行vcom读取,在vcom栏会显示读取出来的vcom值(十六进制),同时“端口信息”栏也会打印相应的读取指令信息。

3、  实现vcom烧录次数读取函数ReadOtpTimes(),参考资料可以看出烧录次数参数在B2h寄存器第三个参数 ,低4位有效;读取出来烧录次数参数出来后,对齐进行判断再赋值给烧录次数变量otptimes。

  

  

  实现方法如下:

  

  到这步完成后,就可以实现自动Flicker查找了;要使PX01能自动查找vcom,需要告诉他一些相关规则,需要在“测试设置”栏“VCOM OTP”栏下设置自动Flicker的相关参数;

  

  次数上限:限定vcom烧录次数,超过之后不进行Flicker烧录,此功能用于生产或工程调试,OTP次数非常有限,避免误烧把仅有的几次烧录次数用完;

  FLK测量类型:分FMA和JEITA两种,常用FMA(%),速度快;

  Vcom搜寻范围:限定vcom值在以起始值为中点,左右范围内进行vcom搜寻;

  Vcom最大值:限定vcom搜寻过程中不能超过的上限;

  Vcom最小值:限定vcom搜寻过程中不能超过的下限;

  Vcom起始值:第一次vcom搜寻的起始vcom值,也是vcom搜寻范围的中点值;

  Vcom步进值:第一次vcom搜寻循环的步进值,之后的循环会逐步缩小一半,直到步进值为1;

  最优阈值:用于不需要找到最佳vcom,满足Flicker需求情况下提前退出查找过程;

  不良阈值:设定最佳vcom的Flicker值判定是否是OK;

  烧录使能:烧录和Flicker功能总开关,不勾选PX01烧录按钮无功能;

  开机烧录:勾选后按开关键点亮屏后自动进行Flicker校准烧录,用于产线提高效率;

  一键烧录:勾选后按烧录键从查找最佳vcom到烧录一次完成,不勾选第一次按烧录键进行最佳vcom查找,需要烧录vcom的话需再按一次烧录键,用于工程调试;不勾选的情况下,已经查找完最佳vcom后,按除了烧录键的任意其他按键,烧录vcom条件将不成立。

  以上参数设置完成后就可以测试自动Flicker校准流程,编译下载后,把F118放置在屏中间位置,开机点亮屏再按“烧录”按键,PX01会自动切到Flicker画面进行最佳vcom搜寻,可以看到屏会从很闪到不闪的过程,并最终会在PX01显示屏的消息栏打印出最佳vcom值。

4、  实现烧录函数BurnOtp(),此步实现的是如何把vcom固化到屏Drvier IC中;查看IC资料,了解烧录的详细流程;

  

  

  

  仔细分析烧录流程,按照烧录流程完成烧录函数功能,实现方法如下图:

  

  

  

  烧录函数实现后,还需设置烧录完毕判断是否成功的检测方法,在上电函数中加入指令SetOtpDoneCheckType(),用于告诉PX01烧录完毕后如何判断是否烧录OK,这里推荐使用SetOtpDoneCheckType (0)或者SetOtpDoneCheckType (2)。

  

  

  到这里就已经完成了自动Flicker校准和vcom烧录的全部流程,验证自动Flicker校准和vcom烧录功能的时候,建议先把烧录次数上限调小,避免误烧;工程编译后下载,开机点亮屏,按“开关”键开机后按“烧录”键进行Flicker自动校准,如果勾选了“一键烧录”,PX01会对屏进行自动Flicker校准和vcom烧录一次完成,否则,Flicker校准完后需再按一次“烧录”键才会进行烧录动作;烧录完毕后,PX01会有提示音并显示烧录结果,烧录OK会提示“滴滴”两声并在PX01显示屏消息栏显示“OTP OK”;烧录NG则会提示“滴滴滴”并在PX01显示屏消息栏显示“OTP NG”。

例程源码连接:

链接:https://pan.baidu.com/s/1KiJMeaPwDLGI1Ov-RAgkgQ
提取码:4hgf

这个例程示例只起抛砖引玉之用,实际应用需按数据接口和IC资料进行相应功能实现,欢迎交流!

LcdToos如何实现PX01自动调Flicker及VCOM烧录的更多相关文章

  1. hyperopt自动调参

    hyperopt自动调参 在传统机器学习和深度学习领域经常需要调参,调参有些是通过通过对数据和算法的理解进行的,这当然是上上策,但还有相当一部分属于"黑盒" hyperopt可以帮 ...

  2. 自动调参库hyperopt+lightgbm 调参demo

    在此之前,调参要么网格调参,要么随机调参,要么肉眼调参.虽然调参到一定程度,进步有限,但仍然很耗精力. 自动调参库hyperopt可用tpe算法自动调参,实测强于随机调参. hyperopt 需要自己 ...

  3. 转://Oracle undo 自动调优

    Oracle 10gr2的后续版本中添加了UNDO信息最短保留时间段自动调优的特性,不再仅仅依据参数UNDO_RETENTION的设定,其调优原则如下:1. 当UNDO TABLESPACE为 fix ...

  4. 3D打印机如何添加自动调平功能

    原理说明 Kossel/Rostock等Delta(并联/三角洲)类型的机器,可以参考:http://learn.makerlab.me/guides/11 3d打印打印时最重要的是第一层的效果,如果 ...

  5. sklearn学习8-----GridSearchCV(自动调参)

    一.GridSearchCV介绍: 自动调参,适合小数据集.相当于写一堆循环,自己设定参数列表,一个一个试,找到最合适的参数.数据量大可以使用快速调优的方法-----坐标下降[贪心,拿当前对模型影响最 ...

  6. Auto ML自动调参

    Auto ML自动调参 本文介绍Auto ML自动调参的算法介绍及操作流程. 操作步骤 登录PAI控制台. 单击左侧导航栏的实验并选择某个实验. 本文以雾霾天气预测实验为例. 在实验画布区,单击左上角 ...

  7. dbms_sqltune.report_sql_monitor 自动调优

    --创建 dbms_sqltune.create_tuning_task ; --执行 dbms_sqltune.execute_tuning_task; --产看创建的task 和 status S ...

  8. html实现点击章节自动调到开头

    #转载请联系 原理是用id的值结合a链接实现锚点效果.比较简单,直接放一段代码好了. <!DOCTYPE html> <html lang="en"> &l ...

  9. 一个很笨的方法,写脚本来实现自动调dmp,找有用的数据

    很久很久以前用到的方法, 方法挺笨的,但是算是比较实用吧. 全自动的调试dmp,最后只要结果. 谁用得着就给谁看吧. 这里需要两个脚本 1:启动脚本,是一个批处理文件,用来启动调试器,来加载dmp和调 ...

随机推荐

  1. CF10D LCIS(线性DP)

    题意:\(LCIS\)输出方案 变迁の时刻,标记它 P.S:特判没\(LCIS\)的情况 //#include <iostream> #include <cstdio> #in ...

  2. Dynamic CRM一对多关系的数据删除时设置自动删除关联的数据

    在业务实体中主子表非常常见,然后子表可能有会有自己的子表或者多对多关系,在删除的业务场景下,删除主数据,剩余的子数据就成了脏数据, 之前的做法是,监听主表的删除事件,然后在插件中找到其下的子表数据然后 ...

  3. 痞子衡嵌入式:浅析IAR下调试信息输出机制之硬件UART外设

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR下调试信息输出机制之硬件UART外设. 在嵌入式世界里,输出打印信息是一种非常常用的辅助调试手段,借助打印信息,我们可以比较容易地 ...

  4. 华南理工大学 Python第2章课后小测-2

    1.(单选)下列符号中,有()个是Python的关键字.(1)if    (2)lambda  (3)not   (4) For   (5)None(6)from  (7)True   (8)fina ...

  5. 01-MyBatisPlus简介

    一.简介 官网:http://mp.baomidou.com/ 参考教程:https://baomidou.com/pages/24112f/ MyBatis-Plus(简称 MP)是一个 MyBat ...

  6. 2、String类

    String类 String 对象用于保存字符串,也就是一组字符序列 字符串常量对象是用双引号括起来的字符序列,例如:"你好"."12.07"."bo ...

  7. 【疑难杂症】关于pycharm无法安装插件显示网络错误问题

    今天实在受不了英文的pycharm了,想着赶紧装个中文的插件,结果插件界面给我说我网络有问题 search results are not loaded check the internet conn ...

  8. 分布式MinIO快速入门

    官方文档地址:http://docs.minio.org.cn/docs/master/distributed-minio-quickstart-guide Minio服务基于命令行传入的参数自动切换 ...

  9. 使用sonarqube对java项目进行分析

    目前有两种办法,第一种是使用SonarQube-Scanner-Maven,第二种是结合gitlab-ci进行 前提条件:已安装并启动sonarqube,知道访问地址和登录的用户名及密码,具体参考文档 ...

  10. Elasticsearch 集群健康值红色终极解决方案

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247483905&idx=1&sn=acaff63 ...