历史上的今天
返回首页

历史上的今天

今天是:2025年02月19日(星期三)

正在发生

2018年02月19日 | 基于嵌入式系统的I2C触摸屏设计

2018-02-19 来源:eefocus

      引言

  随着计算机相关技术的发展,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线都是双向的。

 

  3触摸屏的驱动

  在Linux系统中,设备驱动程序是一组相关函数的集合,它包括设备服务子程序和中断处理程序。其中的设备服务子程序包含了所有与设备相关的代码,每个设备服务子程序只处理一种设备或者紧密相关的设备,从设备无关的软件中接受抽象的命令并执行它。设备驱动程序利用结构file_operations与文件系统联系起来,设备的各种操作的入口函数放在结构file_operations中,其中包括open()、release()、read()和write()等接口,从而简化了驱动程序的编写工作。这样,应用程序根本不必考虑操作的是设备还是普通文件,可一律视为文件来处理,具有非常清晰统一的I/O接口。其触摸屏的file_operations结构定义如下:

 

  本结构的主要作用是为不同的设备提供一致的接口。如在应用程序中,对不同设备进行读操作都使用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所示。

 

 

3.2设备初始化模块


  设备初始化模块的主要功能是:初始化设备、向内核注册设备等。具体实现函数如下:

 



  初始化模块利用内核提供的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坐标的转换程序如下:

 

  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和移动式应用等。


推荐阅读

史海拾趣

问答坊 | AI 解惑

求助:对于新学者,哪个厂商的FPGA更容易上手??

请教:对于一个初学者,赛灵思 Altera Lattice 哪家厂商的FPGA更容易入门??更容易学习?? 在硬件结构,硬件描述语言,集成开发环境的使用,设计仿真记载系统完成芯片设计的制作流程等方面,各自有什麽特点和优势? ...…

查看全部问答>

开关电源滤波器选择与使用

开关电源滤波器选择与使用…

查看全部问答>

ppp协议求教

3f01在ppp协议中代表哪一类字协议?我在进行gprs拨号后收到7e ff 7d 23 3f 7d 21 7d 22 7d 20 7d 33 7d 22 7d 26 7d 20 7d 20 7d 20 7d 20 7d 23 7d 25 3f 7d 25 7d 27 7d 22 7d 28 7d 22 6f 7d 31 7e 7e ff 7d 23 3f 7d 21 7d 22 7d 20 7d 33 7d 2 ...…

查看全部问答>

求S3C2440的引导注释或翻译!

求S3C2440的引导注释,或者求语言达人给出下面韩文的翻译。先谢谢了! 文章地址:http://hompy.nugu.com/board/board_template.aspx?idx=18810&folder=0&list=0&bt=read&word=&field=content&page=1&pagesize=10&hcid=kbuilder&cid=…

查看全部问答>

浮点数格式化字符串

有一浮点数:4.12345,要格式化输出“+04.123\",即一位符号,两位整数,三位小数。 …

查看全部问答>

Error 0x80000200/-1135 Fatal Error

Error connecting to the target: Error 0x80000200/-1135 Fatal Error during: OCS,  Unrecoverable emulation error 晶振应该是起振的,不知道还应该检查什么地方?…

查看全部问答>

通过加速度计算倾角的方法

    这几天也买了几片MMA7455片子,还没有开始玩;一直在找资料;突然看到这里有个专区讨论很是高兴;不过也可惜的就是问的多答得少。做出来的多;开源的少。     也可能是出来不懂,也后多学学了;     我从网 ...…

查看全部问答>

ARM教材,不知有人发过没

本帖最后由 paulhyde 于 2014-9-15 08:53 编辑 传说是浙大ARM教材,分享一下,赚点芯币······  …

查看全部问答>

电动汽车充电站控制系统分析

  电动汽车作为一种发展前景广阔的绿色交通工具,今后的普及速度会异常迅猛,未来的市场前景也是异常巨大的。在全球能源危机和环境危机严重的大背景下,我国政府积极推进新能源汽车的应用与发展,充/换电站作为发展电动汽车所必须的重要配套基 ...…

查看全部问答>

这个芯片谁认识?----DSP5402外围

上面第一行,标志 V04 第二行,746 谢谢…

查看全部问答>