硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5268|回复: 2
收起左侧

触摸屏校准总结,说的不对或不完整请更正或补充

[复制链接]

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2015-5-21 23:28:50 | 显示全部楼层 |阅读模式
刚接触触摸屏,参考了本论坛提供的些资料,搞了两天,基本搞定。总的来说还是有点小难度的,尤其是AD值变换到实际像素坐标的时候有点绕脑子,总结一下吧。
硬件方面:
我用的是RA8875芯片,这个芯片就是好,触摸屏驱动也带了,直接接上就好了,但还是要注意一下,XP,XN,YP,YN,这几个口子不要画错了,XP,XN 两个脚反了,或者YP,YN脚反了,关系不大。但是X,Y脚反了就没的救了吧。还有就8875里的R70寄存器的ADC取样时间要设的大些,设小了AD转换出来的值不对头。我还试了一下用外部基准,AD转换值也不对,不知道是为什么。
软件方面:
总的来说分两类,基于GUI的和自己搞的,因为有两种方法,论坛里的资料都有提供,刚开始没分清有点晕。
GUI下提供4个驱动函数 void GUI_TOUCH_X_ActivateX(void);void GUI_TOUCH_X_ActivateY(void);int  GUI_TOUCH_X_MeasureX(void) ;int  GUI_TOUCH_X_MeasureY(void) ;前两个函数是给触摸芯片提供激励电压用的,对RA8875没用,因为他自己内部完成了。后面的两个函数有用,分别提供X,Y轴的AD值。这4个函数都是有GUI_TOUCH_Exec();调用的。GUI_TOUCH_Exec()这个函数的也要我们周期性调用的,没跑OS的话就放在定时中断里,推荐的定时周期是10ms;
如果是不基于GUI的,那就直接在定时中断里调用读AD值就行了。有了AD值后,还要滤波和坐标变换,坐标变换前先要完成校准工作。
滤波的话可以自己发挥,也可以参考论坛里提供的方法,上面加了防抖动延时,排序取中间值平均。
坐标变换是这里的难点,AD值为什么要变换成像素值,因为要跟屏幕的像素对应起来,为什么要跟像素对应起来,因为屏幕上的操作都是基于像素的。GUI提供了变换函数 GUI_TOUCH_Calibrate,这个变换是两点校准的变换。本论坛提供的是4点校准的变换。当然了,如果用GUI提供的变换函数,那就要提供2点校准程序来得到2个测试点的坐标。用4点变换程序就要用4点校准程序得到4个测试点。
校准函数说白了就是一个两点直线方程,但是为什么还有点搞呢,主要是跟 显示屏的方向(横屏,竖屏),触摸屏的安装方向,还有就是XP,XN,YP,YN这4根线的接法有关系。因为变量有点多,要全部能适应的话,程序看起来就有点复杂了。如果你实际使用的时候就固定一种情况那就简单多了。这个校准思路应该是这样的,具体怎么实现就看论坛里的资料吧,我也说不好了。

今天调试了一天,还是有点问题,校准后,靠屏幕左边画的点和实际按的位置是对的,靠右边实际按的位置和画出的点有偏差。不知道为什么,明天还得找找原因。就写这么多了,说的不对请斧正。

评分

参与人数 1 +5 收起 理由
eric2013 + 5

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2015-5-22 14:47:37 | 显示全部楼层
感谢楼主的分享、
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2015-6-2 10:37:30 | 显示全部楼层
我也才接触触摸屏,还在摸索中。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-13 22:05 , Processed in 0.290277 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表