引言
随着计算机相关技术的发展,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和移动式应用等。
XKCON祥控酒厂窖池无线测温系统
中国民用无人机产业发展迅速,或将成为新的经济增长点
荣耀Note9、华为Mate10什么时候上市?荣耀9只是开胃菜,真正的旗舰非华为荣耀Note9、华为Mate10莫属,坐等发布会
汽车巨头福特开发送货上门机器人,一次充电,全天工作
NVIDIATitanV显卡拆解 这用料和做工看着就是一种享受
基于嵌入式系统的I2C触摸屏设计
华为不讲感情?那是你太感性
菲力尔发布热源图像开源数据集,将提高自动驾驶车辆的安全性
两段恒流DIM调光端口控制电源icSM2202P应用方案
一加5什么时候上市?一加5最新消息:刘作虎亲自确认一加5配置,骁龙835+前指纹+系统大变
基于DSP内嵌PCI总线的卫星信号仿真器设计
激光切割的原理和方法
如何进行频谱的可视化?如何读懂频谱?
基于物联网技术的智能农业大棚设计方案
哪些扫地机器人值得购买
天合光能入选智能光伏试点示范企业 将不断巩固和提升智能光伏组件业务在全球市场的品牌领先地位
低级密码披露 最受黑客攻击
AT89C52单片机对八路电压表的设计
射频拉远技术和数字光纤直放站两者之间的区别和联系
什么电动牙刷好用?双十二电动牙刷购物指南!