您的位置 首页 资料

根据嵌入式Linux操作系统下的I2C总线接口触摸屏规划

基于嵌入式Linux操作系统下的I2C总线接口触摸屏设计-随着计算机相关技术的发展,ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。ARM 公司是专门从事基于 RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的 ARM 微处理器核。嵌入式Linux系统具有开发源代码、内核稳定、可裁减性等特点,吸引着众多商业公司和自由软件开发者的目光,成为嵌入式系统领域不可或缺的操作系统之一。

跟着计算机相关技能的开展,ARM是微处理器职业的一家知名企业,规划了很多高功用、廉价、耗能低的RISC处理器、相关技能及软件。技能具有功用高、成本低和能耗省的特色。适用于多种范畴,比方嵌入操控、消费/教育类多媒体、DSP和移动式运用等。ARM 公司是专门从事根据 RISC 技能芯片规划开发的公司,作为知识产权供货商,自身不直接从事芯片出产,靠转让规划许可由协作公司出产各具特色的芯片,国际各大半导体出产商从ARM公司购买其规划的 ARM 微处理器核。嵌入式Linux体系具有开发源代码、内核安稳、可削减性等特色,吸引着很多商业公司和自由软件开发者的目光,成为嵌入式体系范畴不可或缺的操作体系之一。

1 电阻式接触屏的作业原理

接触屏安装在显现屏的前端,首要由接触屏检测部件和接触屏操控器两部分组成。依照作业原理和传输信息的介质不同,接触屏可分为电阻式、电容感应式、红外线式以及外表声波式。当物品按在接触屏上时,会发生压力,然后使接触屏两导电层接通,一旦接触屏检测部件监测到用户的接触方位,就将取得的方位信息送入接触屏操控器TSC2007,并对该写信号进行处理,将电压信号转化成数字信号,一起以中止的办法送至S3C2440处理器,计算出触点坐标。

2硬件结构

TSC2007是美国德州仪器TI)公司推出的新一代4线制接触屏操控器,它在与接触屏合作运用时,一旦检测到笔或手点拨接触在屏上,可敏捷得到该点的方位信号,然后到达在接触屏外表上寻址的意图。

TSC2007是典型的逐渐迫临式A/D变换器,其结构以电容再散布为根底,包含了取样/坚持功用。TSC2007的引脚与TPSC2003的引脚彻底兼容,具有片内温度丈量、接触压力丈量和预处理三个功用。TSC2007的I2C接口,以规范形式、高速形式和超高速形式进行数据传输与通讯。为了与其他ARM芯片兼容,规划中没有运用S3C2440内置的A/D通道,而是选用了外扩操控器TSC2007的办法,经过I2C总线办法与S3C2440通讯。因而,规划中S3C2440的GPE14和GPE15别离作为I2C总线的SCL和SDA线,其接触屏操控器接口电路如图1所示,图中的SDA和SCL线都是双向的。

根据嵌入式Linux操作体系下的I2C总线接口接触屏规划

3接触屏的驱动

在Linux体系中,设备驱动程序是一组相关函数的调集,它包含设备服务子程序和中止处理程序。其间的设备服务子程序包含了一切与设备相关的代码,每个设备服务子程序只处理一种设备或许严密相关的设备,从设备无关的软件中承受笼统的指令并履行它。设备驱动程序运用结构file_operaTIons与文件体系联系起来,设备的各种操作的进口函数放在结构file_operaTIons中,其间包含open()、release()、read()和write()等接口,然后简化了驱动程序的编写作业。这样,运用程序底子不用考虑操作的是设备仍是一般文件,可一概视为文件来处理,具有十分明晰共同的I/O接口。其接触屏的file_operaTIons结构界说如下:

根据嵌入式Linux操作体系下的I2C总线接口接触屏规划

本结构的首要作用是为不同的设备供给共同的接口。如在运用程序中,对不同设备进行读操作都运用read函数,写操作则都运用write函数。因而,编写接触屏驱动的实践作业并不杂乱。

3.1驱动作业流程

首要初始化接触屏操控器,然后初始化脉宽调制计时器(PWM TIMER),能够挑选计时器4为时钟,界说10 ms中止1次,以供给接触屏采样时刻基准,即10 ms接触屏采样1次。然后映射接触屏中止向量和定时器中止向量到呼应程序,接触屏中止处理程序是判别接触屏是否被按下了,若接触屏被按下,则给全局变量Flag_Trouch赋值为Touch_Down,不然赋值为Touch_Up。若计时器中止处理程序判别Flag_Touch被赋值为Touch_Down,则给全局变量StartSample置位,以操控接触屏采样。然后体系经过S3C2440_get_xy()取得采样值,对得到的接触屏的数据进行处理。接下来是对接触屏的校准,最终是中止的开释和注册模块的卸载。其详细的接触屏驱动作业流程图如图2所示。

根据嵌入式Linux操作体系下的I2C总线接口接触屏规划

3.2设备初始化模块

设备初始化模块的首要功用是:初始化设备、向内核注册设备等。详细完结函数如下:

根据嵌入式Linux操作体系下的I2C总线接口接触屏规划

初始化模块运用内核供给的request_irq函数,将接触笔的按下与弹起的中止号进行挂号,然后将中止号与中止服务函数联系起来;运用devfs_register_chrdev函数,向体系注册一个字符型设备;最终注册定时器中止,用来操控接触屏的数据采样。

3.3采样值的取得

首要发动TSC2007的A/D转化。等候一段时刻后,调用S3C2440_get_xy ()函数,这个函数的功用是取得接触屏的方位,首要从TSC2007的一个通道取得x的坐标值,然后在从另一个通道取得y的坐标值,判别回来接触点坐标值是否在有用规模内,假如在有用规模内则采样标志ts_pressure=1,假如不在有用规模之内,其采样标志ts_pressure=0。read函数中经过调用copy_to_user(buffer,dbuf,length),可将内核空间数据拷贝到用户空间。

3.4采样值的处理

函数Touch_Coordinate Conversion完结接触屏采样值转化成显现坐标,其间TOUCH_MAX_Y和TOUCH_MIN_Y是接触屏X坐标采样值的最大和最小值;X坐标同理。若运用的是320×240的TFT屏,则Y坐标的转化程序如下:

根据嵌入式Linux操作体系下的I2C总线接口接触屏规划

3.5接触屏的校准

在实践的运用中,一般接触屏是作为与显现屏合作运用的输入设备,需要从接触屏采样得到的坐标与屏幕的显现坐标做一个映射。文中接触屏规划选用的是三点校准的办法,与两点校准比较,三点校准的模型考虑到变相和旋转,更挨近实践情况。运用中首要选取3个相距较远且不在一条线上的3个作为校准输人的独立采样点,它们相应的接触屏采样坐标是P0(x0,y0)、P1(x1,y1)、P2(x2,y2),显现坐标是PD0(xD0,yD0)、PD1(xDl,yD1)、PD2(xD2,yD2)。直角坐标平面的两个点P和PD,界说P为接触屏空间的坐标点,PD为显现屏空间的坐标点,P能够经过旋转、份额和平移得到PD坐标。PD和P点之间存在一次线性关系满意:xD=Ax+By+C,yD=Dx+Ey+F。关于同一个设备,其间的A、B、C、D、E、F为常数,称为校准常数,故只需在接触屏校按时,解出这6个常数,就能够完结接触屏空间

到显现空间的转化。

3.6中止开释和注册模块的卸载

规划中经过调用s3c2440_ts_cleanup_module0来完结中止的开释和设备的卸载,别离将它们开释在初始化过程中,其请求的IRQ_TIMER4、IRQ_ADC_DONE、IRQ_TC的中止和字符设备的接口函数devfs_register_chrdev ()详细如下:

4结束语

文中根据S3C2440的接触屏驱动开发,考虑到与其他的ARM芯片兼容性,并没有运用ARM自带的A/D通道,而是外扩了接触屏操控器TSC2007。对TSC2007的初始化,首要是初始化TSC2007与S3C2440的I2C接口衔接,在驱动流程中,假如接触笔按下就进人中止处理程序,读取x,y坐标,在采样函数中设置了一个copy_to_user(buffer,dbuf,length)函数,将从接触屏接连测的数据,送入存储区。

结合实践的硬件渠道,这个根据嵌入式Linux操作体系下I2C总线接口接触屏规划,选用的是处理采样数据的办法,一起运用了改善的校准办法,然后使该接触屏驱动更能满意实践的要求。ARM是微处理器职业的一家知名企业,规划了很多高功用、廉价、耗能低的RISC处理器、相关技能及软件。技能具有功用高、成本低和能耗省的特色。适用于多种范畴,比方嵌入操控、消费/教育类多媒体、DSP和移动式运用等。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部