您的位置 首页 ADAS

FL2440下触摸屏校准

由于FL2440自带的文件系统中busybox命令不支持TAB自动补全,所以自己重新制作了文件系统,然后烧写,不过过后有点问题,触摸屏不好使了。也…

我们FL2440自带的文件体系中busybox指令不支持TAB主动补全,所以自己从头制作了文件体系,然后烧写,不过往后有点问题,角度屏欠好

使了。也没有提示校准。下面是解决办法

一:WINCE之校屏

WINCE的校屏参数是保存在注册表中的。翻开BSP包中的platform.reg,找到如下代码:

  1. IFBSP_NOTOUCH!
  2. [HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH]
  3. “MaxCalError”=dword:7
  4. “CalibrationData”=”626,4641054,823192,813190,1081070,104”
  5. “Order”=dword:1
  6. ENDIFBSP_NOTOUCH!

这儿的CalibrationData便是校屏数据。我们WINCE开机后角度偏移太大,底子无法点击进入校屏程序,有两种办法:

办法一:假如您手上有USB鼠标,将USB鼠标刺进USB的HOST接口,这时就可以经过鼠标进入校屏界面了。点开端,操控
面板,笔针。

办法二:这种办法不合适初学者,合适程序开发人员。首要同步开发板,将校屏应用程序拷到开发板某目录,再经过
VS2005,恣意翻开一个应用程序,将程序进口指向拷备的应用程序,再F5,即运行了该校屏程序。详细进程这儿就不
一一列举了。

校完屏后,假如校对的注册表丢掉,再重烧体系后,又会呈现偏移。批量生产时就更不用说了。那怎么办呢?其实,当
您校完屏后,保存的校对数据现已保存起来了。经过remote register editer检查注册表信息,进入如下途径:
HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH
记载CalibrationData的数据,将platform.reg里的过错数据用该数据替换。留意,files目录下的和release目录下的
platform.reg都要修正!更改后再make一下,生成的NK,便是正确的数据了。

二:LINUX之校屏

我们飞凌开发板默许没有校屏,可是引导linux体系后,现已进入shell界面了[QT界面],没有校准的进程。怎么办?经过
DNW或许超级终端,进入linux的consloe,检查/etc下有个文件pointercal,删去该文件,reboot,体系将重启,主动进入校准界面。这时就可以校屏了。
假如这时校屏依然无法成功,即重复的点击那个十字架不断,这是角度屏驱动的问题,“修正以下代码:
/drivers/char/s3c2410ts.c中将static inline void s3c2410_get_XY(void)函数中的x,y值互换次序。” 详细地:

  1. staticinlinevoids3c2410_get_XY(void)
  2. {
  3. if(adc_state==0){
  4. adc_state=1;
  5. disable_ts_adc();
  6. x=__raw_readl(S3C2410_ADCDAT1)&0x3ff;//x:f04y:f0ebypht.
  7. mode_y_axis();
  8. start_adc_y();
  9. }elseif(adc_state==1){
  10. adc_state=0;
  11. disable_ts_adc();
  12. y=__raw_readl(S3C2410_ADCDAT0)&0x3ff;//y:f04x:f0ebypht.
  13. DPRINTK(“PENDOWN:x:%08d,y:%08d/n”,x,y);
  14. wait_up_int();
  15. tsdev.penStatus=PEN_DOWN;
  16. tsEvent();
  17. }
  18. }

改为

  1. staticinlinevoids3c2410_get_XY(void)
  2. {
  3. if(adc_state==0){
  4. adc_state=1;
  5. disable_ts_adc();
  6. y=__raw_readl(S3C2410_ADCDAT1)&0x3ff;//x:f04y:f0ebypht.
  7. mode_y_axis();
  8. start_adc_y();
  9. }elseif(adc_state==1){
  10. adc_state=0;
  11. disable_ts_adc();
  12. x=__raw_readl(S3C2410_ADCDAT0)&0x3ff;//y:f04x:f0ebypht.
  13. DPRINTK(“PENDOWN:x:%08d,y:%08d/n”,x,y);
  14. wait_up_int();
  15. tsdev.penStatus=PEN_DOWN;
  16. tsEvent();
  17. }
  18. }

然后从头编译内核,烧写内核

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/264223.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部