基于s3c2410与触摸屏的软硬件设计.docx
- 文档编号:28995911
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:16
- 大小:831.46KB
基于s3c2410与触摸屏的软硬件设计.docx
《基于s3c2410与触摸屏的软硬件设计.docx》由会员分享,可在线阅读,更多相关《基于s3c2410与触摸屏的软硬件设计.docx(16页珍藏版)》请在冰豆网上搜索。
基于s3c2410与触摸屏的软硬件设计
基于s3c2410与触摸屏的软硬件设计
————————————————————————————————作者:
————————————————————————————————日期:
摘要:
给出S3C2410上触摸屏的实现原理、硬件结构和软件程序;对软件进行优化,改进软件滤波的实现方法.其算法使用C语言实现,可移植到任何操作系统的触摸屏驱动程序中.
本文介绍了基于三星S3C2410X微处理器,采用SPI接口与ADS7843触摸屏控制器芯片完成触摸屏模块的设计。
具体包括在嵌入式Linux操作系统中的软件驱动开发,采用内核定时器的下半部机制进行了触摸屏硬件中断程序设计,采用16个时钟周期的坐标转换时序,实现触摸点数据采集的方法,给出了坐标采集的流程。
设计完成的触摸屏驱动程序在博创公司教学实验设备UP—NETARM2410—S平台上运行效果良好。
引言:
随着个人数字助理(PDA)、瘦容户机等的普及,触摸屏作为终端与用户交互的媒介,在我们的生活中使用得越来普遍。
触摸屏分为电阻式、电容式、声表面波式和红外线扫描式等类型,使用得最多的是4线电阻式触摸屏。
本文以ARM9内核芯片S3C2410触摸屏接口为基础,通过外接4线电阻式触摸屏构成硬件基础。
在此基础上,开发了触摸屏面图板程序
随着信息家电和通讯设备的普及,作为与用户交互的终端媒介,触摸屏在生活中得到广泛的应用。
如何在系统中集成触摸屏模块以及在嵌入式操作系统中实现其驱动程序,都成为嵌入式系统设计者需要考虑的问题。
本文主要介绍在三星S3C2410X微处理器的硬件平台上进行基于嵌入式Linux的触摸屏驱动程序设计。
一、S3C2410处理器
S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用FBGA封装,采用0。
18um制造工艺的32位微控制器.该处理器拥有:
独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer,I/O口,RTC,8路10位ADC,TouchScreen接口,IIC—BUS接口,IIS-BUS接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。
S3C2410处理器最高可运行在203MHz。
32位处理器
核心板的尺寸仅相当于名片的2/3大小,尺寸如此小巧的嵌入式核心板是国内首创。
开发商可以充分发挥想象力,设计制造出小体积,高性能的嵌入式应用产品。
(1)S3C2410芯片集成了大量的功能单元
◆内部1.8V,存储器3.3V,外部I/O3.3V,16KB数据Cache,16KB指令Cache,MMU。
◆内置外部存储器控制器(SDRAM控制和芯片选择逻辑).
◆LCD控制器,一个LCD专业DMA。
◆4个带外部请求线的DMA.
◆3个通用异步串行端口(IrDA1。
0,16-ByteTxFIFOand16—ByteRxFIFO),2通道SPI
◆一个多主I2C总线,一个I2S总线控制器。
◆SD主接口版本1.0和多媒体卡协议版本2。
11兼容。
◆两个USBHOST,一个USBDEVICE(VER1.1)。
◆4个PWM定时器和一个内部定时器.
◆ 看门狗定时器。
◆117个通用I/O。
◆56个中断源。
◆24个外部中断。
◆ 电源控制模式:
标准、慢速、休眠、掉电.
◆8通道10位ADC和触摸屏接口。
◆带日历功能的实时时钟。
◆芯片内置PLL.
◆设计用于手持设备和通用嵌入式系统。
◆16/32位RISC体系结构,使用ARM920TCPU核的强大指令集。
◆带MMU的先进的体系结构支持WinCE、EPOC32、Linux。
◆ 指令缓存(Cache)、数据缓存、写缓存和物理地址TAGRAM,减小了对主存储器带宽和性能的影响。
◆ARM920TCPU核支持ARM调试的体系结构。
◆内部先进的位控制器总线(AMBA)(AMBA2.0,AHB/APB)。
(2)系统管理
◆小端/大端支持
◆ 地址空间:
每个BANK128MB(全部为1GB)。
◆每个BANK可编程为8/16/32位数据总线。
◆BANK0到BANK6为固定起始地址。
◆BANK7可编程BANK起始地址和大小。
◆一共8个存储器BANK。
◆前6个存储器BANK用于ROM、SRAM和其它。
◆两个存储器BANK用于ROM、SRAM、和SDRAM(同步随机存储器).
◆支持等待信号用以扩展总线周期.
◆支持SDRAM掉电模式下的自刷新.
◆支持不同类型的ROM用于启动(NOR/NANDFlash、EEPROM和其它)。
(3)芯片封装
272—FBGA封装
(4)型号
S3C2410A-20、S3C2410A-26
区别:
前者主频最高为200MHZ、后者主频最高为266MHZ.
二触摸屏简介.
随着使用电脑作为信息来源的与日俱增,触摸屏以其易于使用、坚固耐用、反应速度快、节省空间等优点,使得系统设计师们越来越多的感到使用触摸屏的确具有相当大的优越性。
触摸屏出现在中国市场上至今只有短短的几年时间,这个新的多媒体设备还没有为许多人接触和了解,包括一些正打算使用触摸屏的系统设计师,还都把触摸屏当作可有可无的设备,从发达国家触摸屏的普及历程和我国多媒体信息业正处在的阶段来看,这种观念还具有一定的普遍性。
事实上,触摸屏是一个使多媒体信息或控制改头换面的设备,它赋予多媒体系统以崭新的面貌,是极富吸引力的全新多媒体交互设备.发达国家的系统设计师们和我国率先使用触摸屏的系统设计师们已经清楚的知道,触摸屏对于各种应用领域的电脑已经不再是可有可无的东西,而是必不可少的设备。
它极大的简化了计算机的使用,即使是对计算机一无所知的人,也照样能够信手拈来,使计算机展现出更大的魅力.解决了公共信息市场上计算机所无法解决的问题。
文档为个人收集整理,来源于网络文档为个人收集整理,来源于网络
我们把触摸屏分为四种,它们分别为电阻式、红外线式、电容感应式以及表面声波式,下面仅就电阻式触摸屏进行简要介绍:
1、电阻式触摸屏电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层(OTI,氧化铟),上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层OTI,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。
当手指接触屏幕,两层OTI导电层出现一个接触点,因其中一面导电层接通Y轴方向的5V均匀电压场,使得侦测层的电压由零变为非零,控制器侦测到这个接通后,进行A/D转换,并将得到的电压值与5V相比,即可得触摸点的Y轴坐标,同理得出X轴的坐标,这就是电阻技术触摸屏共同的最基本原理。
电阻屏根据引出线数多少,分为四线、五线等多线电阻触摸屏。
五线电阻触摸屏的A面是导电玻璃而不是导电涂覆层,导电玻璃的工艺使其的寿命得到极大的提高,并且可以提高透光率。
2.绝对坐标系统
我们传统的鼠标是一种相对定位系统,只和前一次鼠标的位置坐标有关。
而触摸屏则是一种绝对坐标系统,要选哪就直接点哪,与相对定位系统有着本质的区别.绝对坐标系统的特点是每一次定位坐标与上一次定位坐标没有关系,每次触摸的数据通过校准转为屏幕上的坐标,不管在什么情况下,触摸屏这套坐标在同一点的输出数据是稳定的.不过由于技术原理的原因,并不能保证同一点触摸每一次采样数据相同的,不能保证绝对坐标定位,点不准,这就是触摸屏最怕的问题:
漂移。
对于性能质量好的触摸屏来说,漂移的情况出现的并不是很严重。
3.检测与定位各种触摸屏技术都是依靠传感器来工作的,甚至有的触摸屏本身就是一套传感器。
各自的定位原理和各自所用的传感器决定了触摸屏的反应速度、可靠性、稳定性和寿命。
几种常用触摸屏的特性比较表见下列汇总表常用触摸屏特性比较表
三触摸屏原理
3、1S3C2410接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坐标点采集。
3.2S3C2410触摸屏控制器
S3C2410触摸屏控制器有2种处理模式:
①X/Y位置分别转换模式。
触摸屏控制器包括两个控制阶段,X坐标转换阶段和Y坐标转换阶段。
②X/Y位置自动转换模式.触摸屏控制器将自动转换X和Y坐标.
本文使用X/Y位置自动转换模式。
4、硬件系统设计
2、最小系统电路设计
3、触摸屏电路设计
4、晶振电路设计
5、存储器电路设计:
6、复位电路设计
5、软件设计
5.1程序初始化
初始化触摸屏控制器为自动转换模式.其中寄存器ADCDLY的值需要根据具体的试验选取,可运行本文提供的程序看画线的效果来选取具体的参数.触摸屏中断处理程序Adc_or_TsAuto是判断触摸屏是否被按下了.触摸屏被按下,给全局变量Flag_Touch赋值为Touch_Down,否则赋值为Touch_Up。
初始化脉宽调制计时器(PWMTIMER),选择计时器4为时钟,定义10ms中断1次,提供触摸屏采样时间基准,即10ms触摸屏采样1次。
计数器中断处理程序Timer4Intr中判断Flag_Touch被赋值为Touch_Down,则给全局变量gTouchStartSample置位,以控制触摸屏采样。
之后清除触摸屏中断和计时器中断屏蔽位,接受中断响应,同时计时器开始计时。
5.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); } } elseif(dlXDiff2〈dlXDiff1){ tmx=((px[0]+px[2])>〉1); } else{ tmx=((px[1]+px[2])>>1); } 查看大图 函数Touch_CoordinateConversion完成触摸屏采样值转换成显示坐标,根据不同的硬件有不同的转换方法。 本触摸屏采样坐标及显示坐标如图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); } 5。 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开始计数。 IntTouch_Pen_filtering(int*px){ BOOLretVal; Staticintcount=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>FILTER_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; } returnretVal; } 5.4后续处理 经过上述的筛选和滤波,如果被判定采样值有效,则将其滤波值送给操作系统进行后续处理,否则程序返回,等待下一次采样。 在2410test程序中,可以结合LCD的画点函数,将有效的采样点在LCD上画出,以此检验参数设置是否合理. 六、总结 本文以三星公司ARM9内核芯片S3C2410和4线电阻式触摸屏为硬件基础。 基于此硬件结构,开发了触摸屏画图板程序。 通过软件滤波,提高了系统性能,得到了很好的处理效果,有很强的实用性。 用此算法实现的WindowsCE触摸屏驱动,。 软件使用C语言实现,可以方便地移植到任何操作系统上。 参考文献: 1.毛德操,胡希明著.Linux内核源代码情景分析。 杭州: 浙江大学出版社,2001 2。 孙天泽,袁文菊,张海峰等。 嵌入式设计及Linux驱动开发指南.北京: 电子工业出版社,2005 3。 RLove.Linux内核设计与实现.陈莉君,康华,张波等译.北京: 机械工业出版社,2006 4。 殷惠莉,刘少君,黄道平.基于uClinux触摸屏的设计.电子工程师。 2004 (2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 s3c2410 触摸屏 软硬件 设计
