免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2644 | 回复: 2
打印 上一主题 下一主题

怎么校准触摸屏 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-14 14:19 |只看该作者 |倒序浏览
怎么校准触摸评,触摸触摸屏,有数据打印出但是我相近的两点为所么打印出的x,y坐标的值相差很大阿。怎么使触摸相近两点的坐标差别不大,现象:
x=31,y=430,z=1
x=27,y=409,z=1
x=79,y=383,z=1
x=113,y=341,z=1
x=45,y=396,z=1
x=115,y=338,z=1
x=58,y=351,z=1
x=108,y=340,z=1

code:

    static int XYposition(void)
{
        unsigned short  x,y,z;
        x = *(unsigned short *)0x58000000;

        while (!(x>>15))
        {
                ;
        }
        z = x >> 15;
        x = *(unsigned short *)0x5800000c;
        y = *(unsigned short *)0x58000010;

        printf("x=%d,y=%d,z=%d\n",(x & 0x1ff),(y & 0x1ff),z);
//        printf("long");
       
        writel(0xd3,VA(0x58000004));
        return 0;
}

static int S3cTouchFun(void)
{
        int ret;

        writel(0xd4,VA(0x58000004));
        writel((1<<14)|(49<<6)|(4<<3)|1,VA(0x58000000));
//        printf("maxwit");
       
        return 0;
}

static __INIT__  int S3cTouchInit(void)
{
        int ret;
       
        writel(0xd3,VA(0x58000004));
        ret = GkRegisterIsr(IRQ_TC,S3cTouchFun,NULL);       
        ret = GkRegisterIsr(IRQ_ADC,XYposition,NULL);

        return ret;
}

DRIVER_INIT(S3cTouchInit);

论坛徽章:
0
2 [报告]
发表于 2009-10-15 12:39 |只看该作者
驱动写好了之后,要通过应用程序矫正,tslib里就有矫正工具如ts_calibrate

论坛徽章:
0
3 [报告]
发表于 2009-10-19 21:38 |只看该作者
tslib的校正机制其实不难~

最主要的算法就2条语句~

LZ可以看看源码~  主要就是效验参数生成的呢个模块~ 生成好像是5个还是6个参数~ 基本就能满足触摸屏使用了~

线性什么的之类有需要再加把~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP