准备工作:
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资料进行相应功能实现,欢迎交流!
手机扫一扫
移动阅读更方便
你可能感兴趣的文章