S3C2410上触摸屏的应用实例

发布者:huanguu最新更新时间:2021-02-03 来源: eefocus关键字:S3C2410  触摸屏  内核 手机看文章 扫描二维码
随时随地手机看文章

引言


随着个人数字助理(PDA)、瘦容户机等的普及,触摸屏作为终端与用户交互的媒介,在我们的生活中使用得越来普遍。触摸屏分为电阻式、电容式、声表面波式和红外线扫描式等类型,使用得最多的是4线电阻式触摸屏。


本文以三星公司ARM9内核芯片S3C2410触摸屏接口为基础,通过外接4线电阻式触摸屏构成硬件基础。在此基础上,开发了触摸屏面图板程序。


1 触摸屏原理

S3C2410 接4线电阻式触摸屏的电路原理如图1所示。


整个触摸屏由模向电阻比和纵向电阻线组成,由nYPON、YMON、nXPON、XMON四个控制信号控制4个 MOS管(S1、S2、S3、S4)的通断。S3C2410有8个模拟输入通道。其中,通道7作为触摸屏接口的X坐标输入(图1的AIN[7]),通道5 作为触摸屏接口的Y坐标输入(图1的AIN[5])。电路如图2所示。


在接入S3C2410触摸屏接口前,它们都通过一个阻容式低通滤器滤除坐标信号噪声。这里的滤波十分重要,如果传递给S3C2410模拟输入接口的信号中干扰过大,不利于后续的软件处理。在采样过程中,软件只用给特殊寄存器置位, S3C2410的触摸屏控制器就会自动控制触摸屏接口打开或关闭各MOS管,按顺序完成X坐标点采集和Y坐标点采集。


2 S3C2410触摸屏控制器


S3C2410触摸屏控制器有2种处理模式:


①X/Y位置分别转换模式。触摸屏控制器包括两个控制阶段,X坐标转换阶段和Y坐标转换阶段。


②X/Y位置自动转换模式。触摸屏控制器将自动转换X和Y坐标。


本文使用X/Y位置自动转换模式。


3 S3C2410触摸屏编程


由于触摸屏程序中参数的选取优化需要多次试验,而加入操作系统试验参数,每次编译下载耗费时间过多,不易于试验的进行,因而我们直接编写裸机触摸屏程序。三星公司开放了S3C2410测试程序2410test (可在三星网站下载),提供了触摸屏接口自动转换模式的程序范例ts_auto.c, 本文在此范例的基础上编写了触摸屏画图板程序——在显示屏上画出触摸笔的流走痕迹。


针对坐标点采样时产生的噪声,本文采用噪声滤波算法,编写了相应的噪声滤波程序,滤除干扰采样点。整个触摸屏画图板程序的处理流程如图3所示。



3.1 程序初始化


初始化触摸屏控制器为自动转换模式。其中寄存器 ADCDLY的值需要根据具体的试验选取,可运行本文提供的程序看画线的效果来选取具体的参数。触摸屏中断处理程序Adc_or_TsAuto是判断触摸屏是否被按下了。触摸屏被按下,给全局变量 Flag_Touch赋值为Touch_Down,否则赋值为Touch_Up。


初始化脉宽调制计时器(PWM TIMER),选择计时器4为时钟,定义10ms中断1次,提供触摸屏采样时间基准,即10ms触摸屏采样1次。计数器中断处理程序Timer4Intr 中判断Flag_Touch被赋值为Touch_Down,则给全局变量gTouchStartSample置位,以控制触摸屏采样。


之后清除触摸屏中断和计时器中断屏蔽位,接受中断响应,同时计时器开始计时。


3.2 触摸屏采样程序


如果gTouchStartSample为TRUE,触摸屏接口开始对坐标X和Y的模拟量进行采样,根据试验选取适合的的采集次数。本文中使用9次采集,分别记入到ptx[TouchSample]和pty [TouchSample]数组中, TouchSample为采集次数。


为了减少运算量,将ptx[]和pty[]分别分三组取平均值,存储在px[3]和py[3]中。这里以处理X坐标为例:


px[0]=(ptx[0]+ptx[1]+ptx[2])/3;


px[1]=(ptx[3]+ptx[4]+ptx[5])/3;


px[2]=(ptx[6]+ptx[7]+ptx[8])/3;


计算以上三组数据的差值:


dlXDiff0=px[0]-px[1];


dlXDiff1=px[1]-px[2];


dlXDiff2=px[2]-px[0];


然后对上述差值取绝对值,所得结果简称绝对差值:


dlXDiff0=dlXDiff0>0?dlXDiff0:-dlXDiff0;


dlXDiff1=dlXDiff1>0?dlXDiff1:-dlXDiff1;


dlXDiff2=dlXDiff2>0?dlXDiff2:-dlXDiff2;


判断上述计算的色对差值是否都超过差值门限,如果这3个绝对差值都超过门限值,判定这次采样点为野点,抛弃采样点,程序返回等待下次采样。其中的差值门限需要根据试验测试得到,本文取值为2。


找出其中绝对差值最小的2组数据,再将它们作平均,同时赋值给tmx:


if(dlXDiff0

if(dlXDiff2

tmx=((px[0]+px[2]>>1);


}


else{


tmx=((px[0]+px[1])>>1);


}


}


else if(dlXDiff2

tmx=((px[0]+px[2])>>1);


}


else{


tmx=((px[1]+px[2])>>1);


}




函数Touch_Coordinate Conversion完成触摸屏采样值转换成显示坐标,根据不同的硬件有不同的转换方法。本触摸屏采样坐标及显示坐标如图4、图5所示。其中 TOUCH_MAX_X和TOUCH_MIN_X是触摸屏X坐标采样值的最大和最小值;Y坐标同理。可以运行本文程序,同时使用触摸笔在触摸屏的4个角取得最大最小采样值。这里使用的是320×240的TFT屏,所以TOUCH_X值为320。下面是X坐标的转换程序:


Touch_CoordinateConversio(int*px){


TmpX=(tmx>=TOUCH_MAX_X)?(TOUCH_MAX_X):*px;


TmpX-=TOUCH_MIN_X;


TmpX=(TmpX)?TmpX:0;


*px=(TmpX*TOUCH_X)/(TOUCH_MAX_X-TOUCH_MIN_X);


}


3.3 坐标滤波程序


坐标滤波程序Touch_Pen_filtering,考虑人机界面中对触摸屏的操作有3种:


*触摸笔在触摸屏上的位置不变;


*触摸笔在触摸屏上连续滑过;


*触摸笔在触摸屏上有大幅度的跳跃。


假设三次连续采样时刻为T1、T2、T3(T3> T2>T1),采样间隔为 10ms。由于采样间隔远小于人的反应时间,所以在前两种操作模式下,如果采样点有效,将T1和T3时刻的采样值作平均。其平均值和T2时刻的采样值比较一般不会大于某个门限,否则判定此次采样点为野点。而对于第三种模式下,采样点数据会有很大的跳变。跳变过程中的数据是不稳定的,虽然记入了数据,但被判定成无效的采样点,所以需要在程序中定义一个静态数组x[2]记录相邻的两次采样数据。只有当前后数据持续稳定一段时间,才认为这时的采样点有效。程序中使用的间隔门限FILTER_LIMIT是需要经过试验来选取的。这里只给出X坐标的滤波过程。


//*px为T3时刻的采样值,count是记录连续有效采样点次数的静态变量,标志当前数据持续稳定时间,一旦发现大于//FILTER_LIMIT,count的值又要从0开始计数。


Int Touch_Pen_filtering(int *px){


BOOL retVal;


Static int count=0;


count++;


//如果连续有效采样点次数大于2次,开始进行滤波算法


if(count>2){


count=2;


//将T3时刻采样值和T1时刻采样值作平均


TmpX=(x[0]+*px)/2;


//计算平均值和T2时刻采样值的差值


dx=(x[1]>TmpX)?(x[1]-TmpX):(TmpX-x[1]);


//如果差值大于门限值,说明T3的采样值无效,判为野点返回值为FALSE。为了避免过大的跳跃,认为触摸笔坐标沿变,使用T2时刻采样值来代替本次采样点,同时静态变量x[]中的数据不变,count重新开始记录连续有效采样点次数


if((dx>FIL TER_LIMIT)){


*px=x[1];


retVal=FLASE;


count=0;


}


//否则采样点有效返回值为TRUE,将T3的采样点记入到x[1]中,T2的采样点移到x[0]中


else{


x[0]=x[1];


x[1]=*px;


retVal=TRUE;


}


}


else{


//连续有效采样次数小于2,将T3的采样值记入到x[1],T2的采样值移动到x[0],并不进行滤波处理


x[0]=x[1];


x[1]=*px;


retVal=FLASE;


}


return retVal;


}


3.4 后续处理


经过上述的筛选和滤波,如果被判定采样值有效,则将其滤波值送给操作系统进行后续处理,否则程序返回,等待下一次采样。在2410 test程序中,可以结合LCD的画点函数,将有效的采样点在LCD上画出,以此检验参数设置是否合理。


结语


本文以三星公司ARM9内核芯片S3C2410和4线电阻式触摸屏为硬件基础。基于此硬件结构,开发了触摸屏画图板程序。通过软件滤波,提高了系统性能,得到了很好的处理效果,有很强的实用性。用此算法实现的 Windows CE触摸屏驱动,在汉王手写输入软件的测试下得到了很高的识别率。软件使用C语言实现,可以方便地移植到任何操作系统上。


关键字:S3C2410  触摸屏  内核 引用地址:S3C2410上触摸屏的应用实例

上一篇:基于ARM的可信计算的实现
下一篇:ARM处理器的寄存器介绍

推荐阅读最新更新时间:2024-11-04 04:16

ubuntu 9.04 环境下实现ylp2410 Linux2.6.8内核编译
今天终于在ubuntu上完成了内核编译,现将过程记录如下。 首先,先装qt一些相关的软件包,若后面提示有错误,很可能是缺少一些软件包, 再使用sudo apt-get install **命令即可下载安装。。。。 1.sudo -i 进入root 2.把交叉编译工具复制到/work/tools/下,并解压arm-linux-gcc-3. 4 . 1.tar .bz2, 步骤省略,如下图所示。 2.把交叉编译器路径添加到系统的路径中: 在 bashrc的最后一行加上如下一行: PATH=$PATH:/work/tools/usr/local/arm/3.4.1/bin 截图如下: 启动新系统路径: #source /ro
[单片机]
ubuntu 9.04 环境下实现ylp2410 Linux2.6.8<font color='red'>内核</font>编译
ARM内核的中断技术
    摘要: 以ARM7TDMI处理器为例,详细介绍ARM内核的三种中断:常规中断、快中断和软件中断;结合应用,给出优化的中断处理程序的ARM指令代码,对电子设计人员有效大的参考价值。     关键词: ARM 中断 快速 精简指令系统 1 ARM7TDMI简介 ARM7TDMI是一款经典的通用32位微处理器,采用精简指令系统(RISC)和流水线结构。典型应用如GPS、PDA、双向寻呼机、移动电话、板卡间高速通信等。 ARM7TDMI定义有7种工作模式,本文涉及到的有:用户模式,程序正常运行时的模式;快中断模式,处理器响应快中断而进入的模式;中断模式,处理响应常规中断而进入的模式;监督模式,操作系统
[嵌入式]
Tensilica多内核IP方案成功应用于NetEffect 10G以太网适配器
美国加州SANTA CLARA 2006年11月13日讯 –Tensilica公司日前宣布,NetEffect公司新近引入市场的10Gb iWARP以太网通道适配器(ECA)- NE010是首款可完全实现iWARP以太网标准的适配器,它可以让数据中心的管理者利用现有的以太网的硬件和软件实现真正的10Gbps吞吐量。NetEffect在这款针对适配器的定制芯片设计中采用了Tensilica公司的多颗Xtensa可配置处理器内核。 NetEffect首席执行官 Rick Maule表示,“我们之所以选择Tensilica公司Xtensa处理器内核是因为采用能够容易地对特定的功能进行优化,从而满足我们高速、高难度的以太网通路适配器的
[新品]
车载红外光幕系统 无触摸屏的解决方案
车联网概念带动了智能车载系统的兴起,而基本所有的厂商都以车载屏幕为主要的表现载体。很多车上都配有触摸屏,不过大多数经济车型都是选装件,即使去汽车美容店后装的话,一个电容式触摸屏也在几千块左右。不过如今有一个更经济便利的解决方案,不仅可以代替电容式触摸屏进行多点手势操控,而且其采用的红外光幕技术完全不用担心适配问题,即使是最便宜的经济型车也可以。最主要的是,有一种类似于科幻电影中可操控的全息投影的感觉,是不是觉得高端大气上档次。   这项由Continental推出的 红外光幕 系统,是其针对于汽车娱乐设备开发的多点触控红外技术,用来代替价格相对昂贵的电容触摸屏。通过在LCD显示屏外装配一个发射和接收红外线的方框,车主可以进行
[汽车电子]
车载红外光幕系统 无<font color='red'>触摸屏</font>的解决方案
触摸屏设计挑战升级 工程师该如何提升用户体验?
支持触摸功能的消费类电子设备每一年都在不断增大屏幕尺寸。触摸屏在智能手机中得到广泛应用,并已迅速发展到平板电脑。随着Windows 8的发布,触摸功能正在向超极本、笔记本电脑以及一体机电脑(all-in-one PC)发展。随着屏幕尺寸不断增大,电容式触摸面临的主要挑战是在较大尺寸的屏幕上同样保持用户所期望的较高手机性能。这就意味着需要在相同的时间内扫描更大表面面积上的更多交叉点。此外,处理器必须能在信号更少、噪声更大的条件下工作,同时还要努力保持其速度、精确度以及响应能力,从而实现理想的用户界面体验。   2007年,Apple公司推出iPhone开启了电容式触摸屏在消费类电子产品上的应用。这款3.5英寸屏幕大小的设备引入了多
[模拟电子]
<font color='red'>触摸屏</font>设计挑战升级 工程师该如何提升用户体验?
Linux bootloader全程详解(ARM S3C2410)
写在前面:这篇文章已经写的很详细了。主要参考的就是正果过程,如果要是移植bootloader的话应该找一套现成的源码,至少我是这么认为的,虽然我还没有移植过。 网上关于Linux的BOOTLOADER文章不少了,但是大都是vivi,blob等比较庞大的程序,读起来不太方便,编译出的文件也比较大,而且更多的是面向开发用的引导代码,做成产品时还要裁减,这一定程度影响了开发速度,对初学者学习开销也比较大,在此分析一种简单的BOOTLOADER,是在三星公司提供的 S3C2410 BOOTLOADER上稍微修改后的结果,编译出来的文件大小不超过4k,希望对大家有所帮助. 1.几个重要的概念 COMPRESSED KERNEL and
[单片机]
STM32f103的电阻触摸屏的五点校正算法
由于电阻式触摸屏就是一种传感器,它利用压力感应进行控制,将矩形区域中触摸点(X,Y)的物理位置转换为代表X坐标和Y坐标的电压。这里先引入两个概念,物理坐标和逻辑坐标。物理坐标指触摸屏上点的实际位置,通常以液晶上点的个数来度量。逻辑坐标指这点被触摸时A/D转换后的坐标值。如图1,我们假定液晶最左下角为坐标轴原点A,在液晶上任取一点B(十字线交叉中心),B在X方向距离A10个点,在Y方向距离A20个点,则这点的物理坐标为(10,20)。如果我们触摸这一点时得到的X向A/D转换值为100,Y向A/D转换值为200,则这点的逻辑坐标为(100,200)。 常用的电阻式触摸屏矫正方法有两点校准法和三点校准法。本文这里介绍的是结合了不同的
[单片机]
STM32f103的电阻<font color='red'>触摸屏</font>的五点校正算法
iSuppli:2010年触摸屏驱动PC蓄势待发
  我们出生的时候,手指是伸展的。在图形用户界面(GUI)问世以前,工程师、产品设计师和用户就设想使用类似的方式来存取数据,而不是使用键盘和鼠标。但把触摸屏与市面上销售的电脑结合起来,对于许多初期的梦想者来说一直是唯一致命弱点。触控解决方案已经蓄势多年,一直在等待合适的火花引爆。现在,苹果的iPad以及越来越多的同类产品,正在点燃触控这把火,不仅烧醒了长期沉睡的平板PC市场,而且刺激了一体式台式电脑和显示器市场。   这场革命的根源在许多早期产品中都可以明显看到。1989年的PoqetPad不太光彩夺目,但类似于Motion Computing和Panasonic当今产品的平板外形。上世纪90年代初的Apple Newtons和
[手机便携]
iSuppli:2010年<font color='red'>触摸屏</font>驱动PC蓄势待发
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved