基于嵌入式Linux的矩阵键盘驱动程序研究与开发

随着以计算机技术、通信技术和软件技术为核心的信息技术的发展,嵌入式系统在各个行业中得到了广泛的应用。嵌入式系统已成为当今IT行业的焦点之一。而在嵌入式系统中,键盘是重要的人机交互设备之一。嵌入式Linux是一种开放源码、软实时、多任务的操作系统,是开发嵌入式产品的优秀操作系统平台,是在标准Linux基础上针对嵌入式系统进行优化和裁剪后形成的,因此具有Linux的基本性质。

  随着以计算机技术、通信技术和软件技术为核心的信息技术的发展,嵌入式系统在各个行业中得到了广泛的应用。嵌入式系统已成为当今IT行业的焦点之一。而在嵌入式系统中,键盘是重要的人机交互设备之一。嵌入式Linux是一种开放源码、软实时、多任务的操作系统,是开发嵌入式产品的优秀操作系统平台,是在标准Linux基础上针对嵌入式系统进行优化和裁剪后形成的,因此具有Linux的基本性质。在此提出的矩阵键盘驱动程序的设计方案是以嵌入式Linux和TIOMAP5912处理器为软硬件平台的,在设计的嵌入式语音识别应用平台中,通过测试,表明其具有良好的稳定性和实时性。


  l硬件原理


  OMAP5912处理器是由TI应用最为广泛的TMS320C55XDSP内核与低功耗、增强型ARM926EJ―S微处理器组成的双核应用处理器。用这样一种组合方式将2个处理器整合在1个芯片后,开发人员可以根据实际情况,利用DSP运行复杂度较高的数字信号处理任务,利用ARM运行通信、控制和人机接口方面的任务,从而使便携式设备在保持良好人机交互环境的基础上,有效地降低功耗。在外设方面,OMAP5912微处理器支持常用的各种接口,其中通过MPUIO接口最多可支持8×8的矩阵键盘,系统中采用这个接口扩展了一个4×5的矩阵键盘。其硬件连接示意图如图1所示,其中按键行阵列必须提供上拉信号,列阵列加二极管,防止瞬间电流过大对MPUIO口造成冲击。


基于嵌入式Linux的矩阵键盘驱动程序研究与开发

  按照键盘的构造方式人们把键盘划分为线性键盘和矩阵键盘。其中,线性键盘是指每个按键都占用嵌入式处理器的1个I/O端口,并通过这个I/O端口实现人机交互,各个按键之间互不影响。使用这种方案的优点是简单、可靠,但是线性键盘对I/O端口的占用量很大。因此,嵌入式系统中很少采用这种方法。


  另外一种矩阵键盘是指当按键数量过多时,采用矩阵的排列方法,将按键设计成n行m列的矩阵形式。其中,每个按键占用行和列的1个交叉点,并且以行和列为单位引出信号线。这样只需要占用n+m个I/O端口,却可以驱动n×m个按键,大大节省了对嵌入式处理器I/O端口的占用,节省了宝贵的资源。矩阵键盘在减少嵌入式处理器I/O端口占用的问题上做出了很大的贡献,但随之而来的问题是如何确定矩阵中按键的位置,这里采用列扫描法,其思路如下:


  在键盘初始化阶段,所有的列信号(KBC)都被设置输出为低电平。如果矩阵键盘中的1个按键按下,则相应的行信号和列信号线短路,行信号线(KBR)输入由高电平变为低电平,产生1个中断,然后在驱动的中断服务程序中按照表1中的序列逐列扫描列信号,读取行信号的状态,根据读回来的行信号状态就可以判断有那些按键按下。


  另外,键盘驱动必须解决的一个问题是键盘的抖动。在按键按下和抬起的过程中,电压信号会出现很多毛刺,这主要是由于机械按键的弹性作用引起的。尽管触点看起来非常稳定,而且快速地闭合,但相对于嵌入式处理器的运行速度来说,这种动作是比较慢的。这种脉冲在某些按键功能设计时,如果处理不当可能会带来灾难性的后果。所以必须对按键信号进行防抖检测。按键防抖检测的核心思想是在嵌入式处理器的几个时钟周期内,通过对按键信号进行多次访问,查看电平状态是否保存一致。如果保持一致,则说明按键状态已经稳定;否则,说明之前检测到的按键信号是抖动信号或外界信号干扰,系统将不会对其进行任何处理。


  2嵌入式Linux设备驱动程序


  在Linux内核源代码中,各种驱动程序的代码量占据了整个Linux代码的85%。可见,Linux设备驱动在整个操作系统中起着举足轻重的作用。设备驱动是操作系统内核和机器硬件之间的接口,它们控制着设备的操作动作,并且提供了一组API接口给应用程序,使得应用程序能够与这个设备互动。而且,设备驱动为应用程序屏蔽了硬件的细节,在应用程序看来,硬件设备只是1个设备文件,应用程序就可以像操作普通文件一样对硬件设备进行操作。在Linux操作系统中,通常将外围设备分为3种类型:字符设备、块设备和网络设备。


  而在Linux操作系统中,还有一类设备被定义为“平台设备”,通常So(SystemonChip)系统中集成的独立的外设单元都被当作平台设备来处理,这里把4×5的矩阵键盘也定义为平台设备。所谓的“平台设备”并不是与字符设备、块设备和网络设备并列的概念,而是Linux系统提供的一种附加手段,例如,键盘驱动,它本身是字符设备,但也将其归纳为平台设备。


  另外,键盘又属于输入设备,Linux内核提供了输入子系统,如键盘、触摸屏、鼠标等输入设备都可以利用输入子系统的接口函数来实现设备驱动。输入子系统由核心层(InputCore)、驱动层和事件处理层(EventHandler)三部分组成。在Linux内核中,使用输入子系统实现输入设备驱动的时候,驱动的核心工作是向系统报告按键、触摸屏、鼠标等输入事件。而不再需要关心文件操作接口,因为输入子系统已经完成了文件操作接口。通过输入子系统,实现输入设备驱动时只需要完成以下工作:


  (1)在模块加载函数中告知输入子系统输入设备可以报告的事件。例如,可通过_set_bit(EV_KEY,input_dex,一>evbit)来告知输入子系统该设备可报告按键事件。

基于嵌入式Linux的矩阵键盘驱动程序研究与开发

该文观点仅代表作者,本站仅提供信息存储空间服务,转载请注明出处。若需了解详细的安防行业方案,或有其它建议反馈,欢迎联系我们

(0)
小安小安

相关推荐

  • 精彩倒计时:奥威亚战略合作暨新品发布会即将开幕

    从下周开始,奥威亚与希沃的联合新品发布会将正式启动!此次的全国巡展从广州首站拉开帷幕,精彩一触即发!想抢先知道巡展有什么亮点?那就跟着小威一睹为快吧!

    2024年1月27日 资讯
  • 武汉电子眼无法抓拍电动车 少数市民不理解警察执法

    武汉交警现场解说,电动车身形轻便、目标小,按规定应该行驶于非机动车道。而电子眼安装在机动车道上,目前没有识别电动车牌照的功能。如果通过视频人工监控电动车,画面稍纵即逝,难以拍到整个违章过程。

    2024年7月27日
  • 青海省首个城市云脑通用能力服务平台上线!海信智慧城市助力构建“数字青岛”

    近日,省内首个通用政务数字资源平台-城市云脑通用能力服务平台(United Capacity System,UCS)正式发布,这是由青岛市大数据发展管理局打造的又一数字化治理新工具,对于推进全市数字资源统筹共享,推动城市云脑从“能用”向“易用”“好用”提升起到了关键性作用。

    2024年2月15日
  • 佳都科技:深耕数据要素市场,以人工智能促进数字经济发展

    “奋斗铸就辉煌,实干赢得未来”,党和政府高屋建瓴又务实落地,对于民营经济和民营企业发展壮大一贯的鼓励支持,给予了佳都巨大的发展动力。

    2024年2月25日
  • 建设数字化校园网络视频监控系统

    21世纪人类社会步入信息时代,随着多媒体技术和网络技术的迅猛发展,人们追求着更安全更舒适的生活方式。目前,正在兴起的数字化、智能化应用系统是信息时代的必然产物,是高科技与时代发展的巧妙结合,它是以本区域建筑物为平台,兼容智能设备、自动化及网络系统,是集安全、服务、管理及它们之间的最优化组合,向人们提供一个安全、高效、舒适、便利的生活环境。

    2024年2月2日
  • 智慧发力 社区智慧警务+让“汗水警务”告别

    “群众的需求是智慧警务发展的动力,群众的满意是衡量工作的标准。截至目前,日照市已有502个小区完成智慧社区建设,全市接报可防性案件同比下降32.25%。2020年度全省公安机关安全感和满意度调查中,日照市群众安全感和满意度位列全省第2名和第3名。”日照市副市长、公安局局长李刚介绍。

    2024年2月12日