首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
嵌入式技术
» 基于ARM处理器S3C2440和Linux系统的I2C触摸屏设计
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于ARM处理器S3C2440和Linux系统的I2C触摸屏设计
发短消息
加为好友
samwalton
当前离线
UID
872238
帖子
6518
精华
0
积分
3259
阅读权限
90
在线时间
309 小时
注册时间
2012-3-1
最后登录
2014-7-5
论坛元老
UID
872238
1
#
打印
字体大小:
t
T
samwalton
发表于 2012-7-9 16:49
|
只看该作者
基于ARM处理器S3C2440和Linux系统的I2C触摸屏设计
系统
,
工作环境
,
处理器
,
源代码
随着计算机相关技术的发展,ARM嵌入式系统受到越来越广泛的应用,与人们生活的结合也越来越紧密。触摸屏设备因其友善的人机交互性,操作方便灵活,输入速度快,被广泛的应用于这种嵌入式领域中。嵌入式Linux系统具有开发源代码、内核稳定、可裁减性等特点,吸引着众多商业公司和自由软件开发者的目光,成为嵌入式系统领域不可或缺的操作系统之一。触摸屏是一种输入设备,操作简单易学,可靠性高,不占额外的空间,是最常用的便携式系统的输入设备。特别是电阻式触摸屏,它结构简单,成本低,透光效果好,工作环境和外界完全隔离,不怕灰尘和水气,同时具有高解析度、高速传输反应、一次校正、稳定性高、不漂移等特点,因而被广泛用于工业控制领域。
1 电阻式触摸屏的工作原理
触摸屏安装在显示屏的前端,主要由触摸屏检测部件和触摸屏控制器两部分组成。按照工作原理和传输信息的介质不同,触摸屏可分为电阻式、电容感应式、红外线式以及表面声波式。其中的电阻式触摸屏是在表面保护层和基层之间覆着2层透明导电层氧化铟,而这2个导电层分别对应x、y轴,它们之间有细微透明绝缘颗粒绝缘。当物品按在触摸屏上时,会产生压力,从而使触摸屏两导电层接通,一旦触摸屏检测部件监测到用户的触摸位置,就将获得的位置信息送入触摸屏控制器TSC2007,并对该写信号进行处理,将电压信号转换成数字信号,同时以中断的方式送至S3C2440处理器,计算出触点坐标。
2硬件结构
TSC2007是美国德州仪器(TI)公司推出的新一代4线制触摸屏控制器,它在与触摸屏配合使用时,一旦检测到笔或手指点触摸在屏上,可迅速得到该点的位置信号,从而达到在触摸屏表面上寻址的目的。
TSC2007是典型的逐步逼近式A/D变换器,其结构以电容再分布为基础,包含了取样/保持功能。TSC2007的引脚与TPSC2003的引脚完全兼容,具有片内温度测量、触摸压力测量和预处理三个功能。TSC2007的I2C接口,以标准模式、高速模式和超高速模式进行数据传输与通讯。为了与其他ARM芯片兼容,设计中没有使用S3C2440内置的A/D通道,而是采用了外扩控制器TSC2007的方法,通过I2C总线方式与S3C2440通信。由于在嵌入式系统I2C总线中,S3C2440是总线上的主机,TSC2007是从机,而I2C系统有2个引脚,分别是串行数据线SDA和串行时钟线SCL。因此,设计中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总线接口触摸屏设计,采用的是处理采样数据的方法,同时运用了改进的校准方法,从而使该触摸屏驱动更能满足实际的要求。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议