[导读]基于ARM处理器S3C2440和Linux系统的I2C触摸屏设计
0 引言
随着计算机相关技术的发展,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所示。
[!--empirenews.page--]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总线接口触摸屏设计,采用的是处理采样数据的方法,同时运用了改进的校准方法,从而使该触摸屏驱动更能满足实际的要求。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
HYM8563是一款低功耗CMOS实时时钟/日历芯片,由武汉昊昱公司设计生产。它提供一个可编程的时钟输出,一个中断输出和一个掉电检测器,所有的地址和数据都通过I2C总线接口串行传递。最大总线速度为400Kbits/s,每...
关键字:
RTC
HYM8563
I2C
当使用导线连接外部设备或芯片时,导线不可过长,一般控制在 20CM 以内,IIC、SPI、UART 等数字接口数据线驱动能力有限,过长的导线会导致通讯波形迟缓。当导线确实无法缩短时,可通过降低通讯速率的方法来解决、缓解通...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
芯片选择下拉框内列出的每一个备选芯片的驱动文件和数据手册位于S2STool 工具文件夹中的chips 文件夹内,每一个芯片需要 1 个驱动文件和 1 个数据手册文件,用户可自行打开编辑,或者创建新的芯片驱动文件。
关键字:
可编程USB
UART
I2C
SMBusS
SPI
S2STool 是为 S2S 固件开发的测试工具,运行于 Windows 平台,内置串口调试助手和 S2S 参数配置工具,支持动态解析自定义的芯片驱动,用户可自行编写、修改、增加任何芯片的驱动程序, 方便对芯片进行测试和...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
DS1302 是实时时钟芯片,SPI 接口,可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302 内部有一个 31×8 的用于临时性存放数据的 RAM 寄存器。
关键字:
可编程USB
UART
I2C
SMBusS
SPI
GD25Qxx 是四线SPI 接口的 FLASH 芯片,最大容量可达 16Mbytes。板上集成有 GD25Q64 芯片, 每页 256 字节,每扇区 16 页(4k 字节),每块区 256 页(64k),写入前必须先擦...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
CAN
USB2S
VM501/511振弦采集模块 是稳控科技生产的振弦传感器测量模块,具有IIC 接口和 UART 接口。IIC 地址可通过UART 任意设置,假设其地址为 0xB0。
关键字:
可编程USB
UART
I2C
SMBusS
SPI
SHT3x-DIS 是 IIC 接口的温度、湿度传感器芯片,可工作于单次测量或连续自动测量模式。USB2S 已有 1 片 SHT31-DIS 芯片,芯片地址为 0x88。
SHT3X-DIS 的输出温度和湿度均为 3...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
驱动程序安装后,计算机通过 COMx 与 MCU 进行通讯,当 USB2S 的 UART 透明传输功能为开启状态时(默认),MCU 可将 UART1 与UART2 的双向数据进行透明转发,即:实现了计算机的COMx 端口...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
可编程 USB 转 UART/I2C/SMBus/SPI/CAN/1-Wire 适配器 USB2S(USB To Serial ports)是多种数字接口物理层协议转发器,自带强大灵活的 S2S 协议固件程序,支持嵌入C...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
通过电压选择器跳线可设置 USB2S 的工作电压,如下图所示,跳线帽位于 3.3 一侧时工作电压为 3.3V,跳线帽位于 5.0 侧时工作电压为VIN(即USB 供电时的 5.0V)。
设置工作电压时必须两个跳线帽同...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
当使用导线连接外部设备或芯片时,导线不可过长,一般控制在 20CM 以内,IIC、SPI、UART 等数字接口数据线驱动能力有限,过长的导线会导致通讯波形迟缓。当导线确实无法缩短时,可通过降低通讯速率的方法来解决、缓解通...
关键字:
可编程USB
UART
I2C
SMBusS
SPI
摘要:针对如何检测出性能较差的锂电池,提出了一种先学习后检测的方案。装置首先通过学习模式,获得电池样本的平均数据,将平均数据设置为判定基准值:然后进入工作模式,在工作模式中,若检测到某节电池的电性能数据与判定基准值的差值...
关键字:
锂动力电池
内阻检测
触摸屏
基于maXTouch技术的显示屏旋钮控制器通过将机械旋钮与现有多点触摸显示器相结合,实现了创新的人机接口(HMI)解决方案
关键字:
Microchip
控制器
触摸屏
摘要:传统磁控溅射镀膜机控制系统主要由单片机、继电器控制构成,操作过程主要依靠人工完成,效率低,且不具备安全互锁、数据采集等功能。现研制的自动磁控溅射镀膜设备以欧姆龙PLC为主控制器,配合MCGS触摸屏实现了磁控溅射镀膜...
关键字:
机电一体化
PLC
触摸屏
摘要:首先介绍了CANopen通信的变频器控制系统组成,然后对系统中主要组成部分的功能、应用做了介绍,最后以变频器的启动、停止及转速的设定和反馈为例,介绍了变频器控制系统的设计方法。该控制系统在工业控制领域应用较为广泛,...
关键字:
变频器
PLC
触摸屏
上海2022年5月16日 /美通社/ -- 热爱绣花,向往绣花?每次看到别人晒出来的绣花成品就蠢蠢欲动?如今越来越多商铺、个人爱好者开始尝试商用绣花机。作为商铺,可以使用Br...
关键字:
绣花机
BSP
精度
触摸屏
加拿大魁北克省布罗蒙市 - 2022年4月8日 - Boréas Technologies的NexusTouch™压电触觉平台经过精心构造和设计,对智能手机设计和手游举足轻重。通过采用触觉技术,用户触摸输入后可获取触摸输...
关键字:
Boréas Technologies
触摸屏
智能手机
摘 要:设计一种运行在嵌入式Linux平台下的智能家居控制系统的实现方案,该系统采用ARM9微处理器S3C2440作 为主处理器,通过传感器模块对温度、湿度、烟雾信息等进行检测;通辻USB接口的摄像头采集视频信息,采用J...
关键字:
S3C2440
Linux
传感器
GPRS
远程监控