天马 3.5 寸 TFT 屏调试文档
王小涛 2009 年 6 月 12 日
修订版
1 、坐标定位
触摸屏点击时驱动读入的是ADC值,也就是电压值(AD后),一个是x坐标的ADC值,一个是y坐标的ADC值。一个点的x坐标和y坐标的ADC值存放在变量LogicNumber[presstimes]中,高16位是x坐标的ADC值,低16位是y坐标的ADC值,而ADC值也就是屏幕的逻辑坐标值,因此在变量LogicNumber[presstimes]中存储的实际上也是屏的逻辑坐标值。
ADC值是通过函数LogicNumber[presstimes] = WRTAmuse.Common.getStoredNumber();来读取的。
我们的坐标定位程序设置了五个基准点(屏幕坐标),五个基准点(屏幕坐标)分别如下:
PointPX[0] = 30; //第一个基准点的屏幕坐标
PointPY[0] = 30;
PointPX[1] = 290; //第二个基准点的屏幕坐标
PointPY[1] = 30;
PointPX[2] = 30; //第三个基准点的屏幕坐标
PointPY[2] = 210;
PointPX[3] = 290; //第四个基准点的屏幕坐标
PointPY[3] = 210;
PointPX[4] = 160; //第五个基准点的屏幕坐标
PointPY[4] = 120;
通过依次点击这五个基准点分别得到五个点的逻辑坐标值,并判断用户是否对准五个点依次点击。当用户操作正确后,我们的坐标定位程序会将用户依次点击的五个基准点的逻辑坐标记录下来。然后通过线性回归公式计算得出LCD屏的屏幕坐标系与逻辑坐标系之间的比例关系(即计算出参数KX和KY)。而事实上我们的坐标定位程序需要六个参数,其中有四个参数是直接得到的,有两个是需要计算出来的(即KX和KY)。六个参数如下:
XLC(第一个点的逻辑x坐标,即x方向的ADC值)、
YLC(第一个点的逻辑y坐标,即y方向的ADC值)、
XC(第一个点的屏幕x坐标,这里是30)、
YC(第一个点的屏幕y坐标,这里是30)、
KX(逻辑坐标系和屏幕坐标系的x轴比例关系)、
KY(逻辑坐标系和屏幕坐标系的y轴比例关系)。
其中XLC和YLC可以通过函数
LogicNumber[presstimes] = WRTAmuse.Common.getStoredNumber();读取,而XC和YC是我们自己预先设置好的屏幕坐标,KX和KY的计算公式如下:
我们运行我们的坐标定位程序,并通过程序将坐标信息打印出来。结果如下:
_xmouse = 30
_ymouse = 29
1presstimes =0
_xmouse = 288
_ymouse = 30
1presstimes =1
Math.abs(tmpLogicNum_2 - tmpLogicNum_1) =6
Math.abs(tmpLogicNum_3 - tmpLogicNum_4) =3046
_xmouse = 29
_ymouse = 207
1presstimes =2
_xmouse = 288
_ymouse = 209
1presstimes =3
Math.abs(tmpLogicNum_2 - tmpLogicNum_1)=20
(Math.abs(tmpLogicNum_3 - tmpLogicNum_4)=3054
_xmouse = 160
_ymouse = 119
1presstimes =4
PointLX[0] = 461
PointLY[0] = 3279
PointLX[1] = 3507
PointLY[1] = 3285
PointLX[2] = 465
PointLY[2] = 621
PointLX[3] = 3519
PointLY[3] = 601
PointLX[4] = 1991
PointLY[4] = 1941
XLC = 461
YLC = 3279
YC = 30
XC = 30
KX = 11730.76923076923
KY = -14838.888888888889
//刚开始调试大屏的时候,坐标不准,是因为硬件上x和y两根线反了,调过来就ok了。
2 、天马屏的时序
一般来说,液晶屏或者是ssd1926在上电复位后,其寄存器会有一个默认的参数。一般来说我们可以选择屏复位后的默认参数,然后通过设置ssd1926的寄存器来匹配屏的那些默认参数。而我们的调试正是通过设置ssd1926的寄存器来配合屏的默认参数的。
我们先看看天马屏的默认参数:
其中大部分寄存器都可以采用默认参数,只有少数需要进行修改。下面将介绍那部分需要修改的寄存器:
R03h:一般来说,DEN都是为高有效,CLKIN上升沿锁存数据,HSD为低有效,VSD为低有效,24-bit digital RGB input format HV Mode,6.4M。
R0eh:当时出现屏闪的现象,实际上就是这个寄存器参数的问题。我们将这个寄存器值设置为0x6A后,屏闪的现象就消失了。我们在设置这个寄存器的时候,主要是改变VCOMDC的值。但我们在写入寄存器的时候,记得Bit[6](即OTP_BYPS)要设置为1。否则VCOMDC的值不会被写入。
R04h:设置Source Timing delay control register,默认为:70,实际上就是SSD1926中的HDPS
R05h:设置Gate Timing delay control register,默认为:13,实际上就是SSD1926中的VDPS
虽然这里我们是采用天马屏的默认参数来用,但有时候我们需要对屏的一些参数进行一些调整,这里先介绍下如何设置屏的参数。
一般来说设置屏的参数是通过SPI,I2C或者是串口等方式来实现的,一般来说SPI和I2C用得比较多,而我们的天马屏正是SPI接口来设置屏参数的。所以我们要在天马屏的手册中找到屏的SPI时序,如下图:
注意:不同屏的SPI时序可能有所不同,详细应该参见屏的技术手册。