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

相关推荐

  • 《灯杆智能化改造技术要求》发布

    由深圳市物联网产业协会宣布提出并归口管理,深圳新阳蓝光能源科技股份有限公司、深圳市标准技术研究院、广东自由之光照明实业有限公司等多家单位共同参与起草的《灯杆智能化改造技术要求》(T/SZIOT 012―2022)团体标准,于2022年02月21日发布,并于2022年03月20日正式实施。

    2025年12月18日
  • 机器视觉行业增速惊人,千亿蓝海规模初步显现

    在人工智能高速发展的今天,机器视觉全球市场规模以14.47%的年复合增长率逐步扩大,从2010年的31.7亿美元增长至2020年的107亿美元。

    2025年12月18日
  • 莆田涵江公安推进社会治安防控体系建设

    近年来,福建省莆田市公安局涵江分局聚焦“防风险、除隐患、保平安”,持续推进社会治安防控体系建设,着力构建多方参与、联动共治、齐抓共管的社会治安防控格局,预警预防能力、打击犯罪能力、整体防控能力、基础管控能力明显提升。

    2025年12月18日
  • 青岛:城市更新注入科技动能

    城市更新与城市建设是破解“钱从哪里来,人向何处去”难题的一把金钥匙,让城市更新建设成果惠及民生福祉,是青岛市推进城市更新建设攻坚行动的出发点和落脚点。

    2025年12月18日
  • 小小警用无人机,助力宜春防疫

    “现在特殊时期,请在小区里散步的居民,戴好口罩,赶紧回家!”5月13日,宜春市公安局民警熟练地操控一架警用无人机,在空中拍摄宜春中心城区各小区、道路出入口和周边环境等实时画面,提醒居民遵守防疫相关规定。

    2025年12月18日
  • 榆林打造“智慧养老”云平台

    近日,陕西榆林移动积极落实“十四五”养老服务体系建设要求,抓住政策机遇,充分发挥网络资源优势,聚焦“数字乡村”建设,融合5GAICDE能力,在陕西省榆林市吴堡县张家山镇园宋家沟村幸福院搭建基于云网边端协同的智慧养老服务平台,这是榆林市首个智慧养老云平台服务项目。

    2025年12月18日