基于嵌入式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)
小安小安

相关推荐

  • 海港码头安全监控系统–采用红外热成像技术

    提供安全设施,保持码头安全环境,应该是码头管理的基本职责。通过保安警察,控制进出口、观察和用户了解等综合措施就能得到保护。虽然犯罪分子至今尚未达到流行程度,但已对娱乐艇、码头设备等…

    2025年12月9日
  • 河南省公安厅:提升偏僻地区安全防范级别

    各级公安机关要以“抓主责、查隐患、强防范、严执法”为重点,持续加强人防、物防、技防和长效机制建设,要整治重点部位,提升地处偏僻、治安状况复杂地区和城乡接合部的安全防范级别。

    2025年12月9日
  • 武汉:中博会安保进入倒计时

    中博会即将在湖北武汉开幕,此次活动规模大、规格高、涉及场馆多,安保任务重,武汉警方及早制定方案并强化演练。16日,市委常委、市公安局局长喻春祥现场踏勘,细致检查各项安保举措落实情况。

    2025年12月9日
  • 福建石狮民警开展校园安保技能培训

    学校的保安人员是校园最重要的一道防线。为提高“防线”的防御、应急能力,自然门学校增配安全人员及安全防范器材,并注重提高安保人员的业务能力。

    2025年12月9日
  • 大型群众性活动安保 厦门经验将全省推广

    厦门出台大型群众性活动安全管理立法,引起省委省政府的高度重视,也参照厦门经验出台了大型活动安保办法。目前,该项办法已通过省政府常务会议审核,将于6月1日起在全省正式实施。

    2025年12月9日
  • 科技助力深圳文博会安保工作

    据了解,为做好文博会安保工作,深圳警方制定了详细的安保工作方案及处置突发事件的应急预案,并在主会场深圳会展中心设立了安保现场总指挥部,组织指挥现场安保工作。

    2025年12月9日 资讯