当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]嵌入式ARM下的触摸屏驱动系统设计

摘要:介绍了基于飞思卡尔芯片i.MX27和嵌入式linux系统下的触摸屏硬件的连接设计和软件的驱动设计,并依照此设计实现了触摸屏的从硬件到软件的驱动系统。该实现主要应用于家庭无线智能控制系统中。

文章首先介绍了触摸屏的实现原理,然后介绍了触摸屏芯片AD7873的特性,在此基础上设计了ad7873与i.MX27和触摸屏的连接PCB图,最后依照硬件连接图设计了嵌入式Linux下的驱动,并成功通过了tclib触摸屏专业测试软件的测试,在家庭智能网关系统的测试中也成功运行,实现了从硬件到软件的嵌入式下触摸屏的驱动系统设计

1引言

随着计算机技术的发展和普及,触摸屏技术得到了越来越广泛应用,在各种手持设备中,如手机、MP4、掌上游戏机、掌上PDA等,由于其方便、舒适,使其完全摆脱了键盘和鼠标的束缚,使人机交互更为直截了当。而在微软最新开发的windows7操作系统中,就有其值得骄傲并加以推广的多点触摸技术,并成为一大卖点。可见,触摸屏技术引起了上到微软,下到普通老百姓的关注。而在我们的日常生活中,无论你是在商场购物,还是在银行存取款,触摸式的自动服务器将能为你提供了方便快捷的服务。这里通过对触摸屏原理的理解和分析,成功的设计出了CPU与触摸屏芯片之间的硬件连接,并依照硬件和驱动设计的原理,设计出了基于嵌入式Linux和飞思卡尔i.MX27芯片以及AD7873触摸屏芯片的驱动程序,并成功移植到内核中,实现了家庭控制器系统的触摸技术。

2硬件系统的构成

2.1电阻式触摸屏原理。

电阻式触摸屏是一种传感器,它将矩形区域中触摸点(X,Y)的物理位置转换为代表X坐标和Y坐标的电压。当触摸屏表面受到的压力(如通过笔尖或手指进行按压)足够大时,顶层与底层之间会产生接触。所有的电阻式触摸屏都采用分压器原理来产生代表X坐标和Y坐标的电压。如图1所示,分压器是通过将两个电阻进行串联来实现的。上面的电阻(R1)连接正参考电压(VREF),下面的电阻(R2)接地。两个电阻连接点处的电压测量值与下面那个电阻的阻值成正比。为了在电阻式触摸屏上的特定方向测量一个坐标,需要对一个阻性层进行偏置:将它的一边接VREF,另一边接地。

同时,将未偏置的那一层连接到一个ADC的高阻抗输入端。当触摸屏上的压力足够大,使两层之间发生接触时,电阻性表面被分隔为两个电阻。它们的阻值与触摸点到偏置边缘的距离成正比。触摸点与接地边缘之间的电阻相当于分压器中下面的那个电阻。因此,在未偏置层上测得的电压与触摸点到接地边之间的距离成正比。

图1原理示意图

2.2AD7873介绍及与系统硬件原理

AD7873是一款12位逐次逼近型ADC,具有同步串行接口以及用于驱动触摸屏的低导通电阻开关,采用2.2V至5.25V单电源供电,吞吐量大于125KBPS.

AD7873可用于电池测量、温度测量和触摸压力测量,还具有一个2.5V片上基准电压源,可用于辅助输入、电池监控器和温度测量等模式。不使用时,可关断内部基准电压源以降低功耗。也可以使用外部基准电压,并可在1V至VCC范围内变化,模拟输入范围为0V至VREF.这款器件具有关断模式,此模式下功耗不足1μA。

2.3AD7873与CPU和触摸屏的硬件连接图

其硬件原理框图如下,其中的X+,Y+,X-,Y-与触摸屏的相应引脚相连,接受来自触摸屏的模拟信号,然后经过AD7873芯片的内部处理成数字信号,通过SPI总线将数据传送给CPU,请求处理。CS为片选引脚,与CPU的DTR_DCE1相连,PENIRQ为中断引脚,接CPU的GPIO1_0.

图2硬件连线图

图3触摸系统框图

3软件系统

3.1Linux设备驱动介绍

在Linux系统中,为了简化对设备的管理,所有的外围设备被归结为3类:字符设备、块设备、网络设备。Linux对所有的物理设备进行了抽象,并定义了一个统一的概念:接口。AD7873被定义为一个字符设备,采用spi接口与CPU通讯。

3.2驱动部分重要函数的设计

(1)设备驱动程序中数据结构strcutdriver定义了一系列函数操作的接口,这个数据结构将整个驱动连为一体,由这个结构可以看出整个驱动的脉络。由于AD7873与CPU连接方式为SPI总线连接,因此将此设备注册为SPI设备,即要用到数据结构structspi_driver.

对应于AD7873设备,设计编写的数据结构如下:

其中,driver中定义了驱动名称、总线类型和驱动所有者。

probe函数为探测设备的函数。其主要进行初始化设备数据结构、初始化中断、向设备发送控制字等。

remove函数为设备移除函数。其主要进行移除设备文件、释放中断、释放设备。

suspend为设备暂停函数。

resume为设备恢复函数。

(2设备初始化函数staticint__initad7873_nit(void)即是注册上述数据结构,也即是注册一个驱动,其中主要的内容为:

returnspi_register_driver(&ad7873_driver);(3)还要设计一个重要的函数,就是中断函数,在触摸屏被按下的时候产生中断,在中断函数中的重要工作就是启动定时器,以判断触摸后的动作是触摸笔被提起还是继续按下。其函数原型设计为staticirqreturn_tads7873_irq(intirq,void*handle);(4)定时器函数设计的目的就是判断触摸屏是否被提起,被提起就立刻刷新设备的数据到应用层,仍然处于"按下"状态,则需要继续测量。其函数原型设计为:

staticvoidads7873_timer(unsignedlonghandle);

3.3驱动的编译和加载

驱动程序加入内核有两种方式动态和静态,动态就是只是把驱动编译为模块,系统启动后执行insmod后加载,静态是指直接编译进内核,系统启动后自动加载了。由于我们的驱动需要经过测试才能加入内核,因此采用动态的方式加载驱动。[!--empirenews.page--]

在已经安装好开发平台的主机上执行make,就可以得到目标文件ad7873.ko,这就是我们需要的驱动。在platform_data数据结构中设置好驱动需要的数据,如中断、触摸屏大小、触摸压力上下限等数值,并编译好内核下载到开发板中运行。然后将ad7873.ko复制到开发板,在终端下执行insmodad7873.ko,得到如下提示:

图4驱动加载信息

显示驱动已经加载成功,中断号为126.

(注:"thissectencehasbeen",为调试驱动中断的测试语句)然后用应用广泛的tslib触摸屏测试程序对驱动进行测试,测试结果显示,触摸屏工作正常。下图触摸屏上白色的字"桂林电子科技大学触摸屏"为在tslib的测试程序下用触摸笔写的字,证明了触摸屏工作是正常的。

将此设计应用到家庭智能网关系统中,证明其工作稳定,响应很快。

图5触摸屏正常响应图

4驱动程序出现的问题及解决方法

在调试驱动的过程中,出现了很多问题,主要有以下两个:

4.1加载时报错

在执行insmodad7873.ko时,报错为:

ad7873:noversionfor"struct_module"found:kerneltainted.

经过检查,发现是因为platform_data里面定义的。model="7873"被写成了。model="7883",造成了系统无法识别这个驱动,产生了错误,修改后执行insmodad7873.ko成功。

4.2使用tslib测试软件测试的时候,屏幕无反应

原以为是中断程序出了问题,因此在中断里面设置打印信息,发现可以打印,于是确定了中断时正常响应了的。然后跟踪代码检查,发现定时器函数很可疑,于是在定时器函数设置打印信息,发现定时器函数没有正确执行,找到了问题的所在。于是顺藤摸瓜,终于发现原来是在这个函数中fn_get_pendown_state(void),也就是用来得到触摸屏状态的引脚设置不正确,导致定时器函数里面无法得到触摸屏的状态,所以无响应。修改了定时器的引脚定义使其指向正确的引脚便一切OK。

5结论

本文从硬件到软件设计了整个触摸屏驱动系统。作为家庭无线智能控制器的一部分,触摸屏使整个系统使用更方便与高效。而未来随着对触摸技术的越来越高的要求,如多点触摸技术,需要驱动为上层应用提供更稳定的处理与更多的接口,以便上层应用可以更加高效的编写应用程序来应对复杂的机制。这就需要在内核驱动层改进驱动的结构与算法来应对。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭