原创 基于嵌入式系统的I2C触摸屏设计(2)

2012-3-22 09:31 1352 18 18 分类: 消费电子

 3.2设备初始化模块

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

516367-110920111213636.jpg

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

516367-110920111224951.jpg

  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 ()具体如下:

516367-110920111235100.jpg

  4结束语

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

  结合实际的硬件平台,这个基于嵌入式Linux操作系统下I2C总线接口触摸屏设计,采用的是处理采样数据的方法,同时运用了改进的校准方法,从而使该触摸屏驱动更能满足实际的要求。ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。

文章来源:http://www.elecfans.com/emb/app/20110920216979_2.html

文章评论0条评论)

登录后参与讨论
我要评论
0
18
关闭 站长推荐上一条 /2 下一条