• 工作总结
  • 工作计划
  • 心得体会
  • 述职报告
  • 事迹材料
  • 申请书
  • 作文大全
  • 读后感
  • 调查报告
  • 励志歌曲
  • 请假条
  • 创先争优
  • 毕业实习
  • 财神节
  • 高中主题
  • 小学一年
  • 名人名言
  • 财务工作
  • 小说/有
  • 承揽合同
  • 寒假计划
  • 外贸信函
  • 励志电影
  • 个人写作
  • 其它相关
  • 生活常识
  • 安全稳定
  • 心情短语
  • 爱情短信
  • 工会工作
  • 小学五年
  • 金融类工
  • 搞笑短信
  • 医务工作
  • 党团工作
  • 党校学习
  • 学习体会
  • 下半年工
  • 买卖合同
  • qq空间
  • 食品广告
  • 办公室工
  • 保险合同
  • 儿童英语
  • 软件下载
  • 广告合同
  • 服装广告
  • 学生会工
  • 文明礼仪
  • 农村工作
  • 人大政协
  • 创意广告
  • 您现在的位置:六七范文网 > 其它相关 > 正文

    基于SEP5010 WinCE 5.0的矩阵键盘驱动的设计与实现

    来源:六七范文网 时间:2023-06-11 03:15:06 点击:

    摘 要:在嵌入式系统中,键盘是重要的人机交互设备。对基于东南大学自主研发的SEP5010芯片和WinCE5.0操作系统的矩阵键盘驱动的研究与设计,正是为了解决基于此平台的手持导航设备的键盘驱动问题。根据平台上键盘布局的特殊性(非标准矩阵键盘),从驱动的工作原理、键盘中断处理程序的设计及键盘键值扫描算法的实现等方面,对WinCE5.0操作系统下的矩阵键盘驱动进行研究与设计,用户可根据需要决定各键的扫描码。目前该键盘驱动方案已经成功应用于该款手持导航设备。

    关键词:SEP5010;WinCE 5.0;键盘驱动;矩阵键盘;中断处理;扫描算法

    中图分类号:TP3342+3文献标识码:B

    文章编号:1004-373X(2008)24-037-03

    Design and Implement of Matrix Keyboard Driver Based on

    SEP5010 Chip Embedded WinCE5.0

    SHI Jianlong,BAO Dan,HUANG Shaomin

    (National ASIC System Engineering Research Center,Southeast University,Nanjing,210096,China)

    Abstract:The keyboard is an important interactive device in embedded system.All the researches and designs described in this paper is to solve the problem of a handled navigation device′s keyboard,based on the platform composed of SEP5010 microchip,which is independently researched and developed by the Southeast University,and WinCE5.0 operating system.The following mainly describes the working principle of the driver,keyboard interrupt handling procedures and scanning algorithm to obtain the key values according to the special layout of the keyboard (non-standard matrix keyboard) on handled navigation device.Users may decide scan codes of the keys according to what they need.Presently,this keyboard driver has been applied to the handheld navigation device.

    Keywords:SEP5010;WinCE5.0;keyboard driver;matrix keyboard;interrupt handling;scanning algorithm

    1 引 言

    嵌入式系统无疑是当今最热门的概念之一。作为一种和图形用户界面的交互手段,同时,作为一种重要的数据输入方式,嵌入式键盘也起着举足轻重的作用。由于嵌入式设备的功能互异性,为其提供一种通用性键盘是不可行的,一般都需要根据嵌入式系统的实际功能来设计所需的特殊键盘,并实现相应的驱动程序。

    提出的键盘驱动方案就是在以嵌入式WinCE 5.0和东南大学自主研发的SEP5010处理器为软硬件平台上,采用了7个键的键盘布局,分为两组。一组是单独的一个键,另一组是3×2(3行2列)的矩阵键盘。根据其键盘布局的特殊性,设计特定的键盘中断处理程序和键盘键值扫描算法,从而实现的本键盘驱动。

    2 设计背景

    2.1 硬件平台

    硬件平台东南大学自主研发的SEP5010芯片,内部集成ARM公司的ARM926EJ-S微处理器,它是32位高性能RISC处理器。最高主频达300 MHz,扩展了64 MB的SDRAM,2MB 32 b的Nor FLASH和64 MB×8 b的NAND FLASH,外围资源丰富。本文所采用的开发

    平台为基于SEP5010芯片的手持导航系统平台,本开发平台的系统框图如图1所示。基于本开发平台的键盘布局如图2所示。

    由于SEP5010芯片没有专用的键盘控制芯片,故采用GPIO口作为键盘扫描端口。如图2所示,该键盘硬件电路总共有7个键,分为2组。一组是单独的1个键SW7,这个键单独占用了1个GPIO中断口(下降沿触发中断),它的一端接地,另一端接在SEP5010的PA4_INT12;另一组是3×2(3行2列)的键盘阵列,行占用了3个中断GPIO口(下降沿触发中断),3条行线KEYR1,KEYR2,KEYR3分别接在SEP5010的PB1_INT1,PB2_INT2,PB3_INT3;列占用了2个普通GPIO口,2条列线KEYC1,KEYC2分别接在了SEP5010的PC0,PC1。

    2.2 软件平台

    平台软件采用WinCE 5.0作为系统的操作系统,它是一个功能强大的实时嵌入式操作系统。它具有内核强大、开源、易扩展和裁减以及丰富的硬件支持等诸多优点,在嵌入式系统领域得到相当广泛的应用。

    WinCE 5.0键盘驱动的整体框架如图3所示。

    当键盘产生按键动作之后,触发中断,键盘驱动启动扫描程序,获得键盘的扫描码。键盘驱动负责把硬件扫描码转换为虚拟键值,并以事件的形式通知上层的GWES。最后GWES将该事件封装成消息发送给合适的应用程序。

    3 本键盘驱动的设计与实现

    3.1 本键盘驱动工作原理详细分析

    WinCE 5.0中的设备驱动程序运行在内核态。内核态处于硬件层之上的系统层,系统层之上则是应用层。本段主要讨论键盘驱动的实现。本文选择将键盘驱动以动态模式加载到内核中。系统启动后,首先启动GWES,GWES调用键盘驱动MDD层(MODE Device Driver)的初始化接口函数KeybdDriverInitializeEx(),同时创建事件处理线程ET(Event Thread,对应函数入口为:KeybdEventThreadProc());然后进入键盘驱动PDD层(Platform Dependent Driver)的入口函数:Matrix_Entry(),对硬件平台进行相关初始化,首先对I/O端口进行初始化,然后启动中断服务线程IST(Interrupt Service Thread,对应的函数入口为:IsrThreadProc()),其专门用于处理键盘事件,其实也就是向系统申请了软硬件资源,如图4所示。

    初始化完毕后,当无键盘事件时,IST线程阻塞。一旦有按键被按下,某列GPIO口则会产生下降沿触发的中断,进入中断服务例程:OEMInterruptHandler。中断服务例程返回逻辑中断号,由内核进行逻辑中断号与相关中断事件的关联,从而唤醒阻塞的IST线程。而键盘矩阵扫描和读取键值等对键盘按下事件的处理均通过IST线程来实现。

    3.2 本键盘驱动的中断处理过程

    本键盘驱动的中断处理过程如图5所示。由于在SEP5010处理器中没有专用的键盘控制芯片,所以按键是通过GPIO来控制的,根据本键盘布局的设计,共申请了4个IRQ中断:分别为EINT1,EINT2,EINT3,EINT12,而每个逻辑中断号只能惟一关联1个物理中断号,所以针对本硬件平台的特殊性,要将该4个硬件中断关联为一个系统中断号IRQ_KEYBD(定义为32号中断),无论4个中断中的哪个被触发都被关联为这个32号中断,由这个惟一的键盘中断号去关联键盘的逻辑中断号,从而触发事件。

    进入中断服务例程后会用内核锁机制将此中断线上产生的其他中断屏蔽,直到退出中断例程,防止其他GPIO口上的中断对此次中断处理产生干扰。因此不难想到如果某个中断服务例程处理的时间太长就可能导致其他中断无法响应,从而产生丢中断的严重后果。在本方案中使用IST线程来处理,就避免了在中断服务例程中耽搁较长时间,影响其他外部中断请求。由于WinCE 5.0系统中内核态都是一些线程在运行,用以处理相应的中断事件。IST线程的使用不会影响其他程序运行且能保证较好对键盘事件进行实时响应。

    3.3 本键盘键值扫描算法的实现

    本段分析了线程唤醒后扫描键盘矩阵得到键值和键盘状态的过程。如图6所示。

    如图6所示,当线程唤醒后,先进行按键防抖,延迟2 ms,然后进入矩阵键盘扫描程序。本开发板的键盘设计为:一共7个键,分为2组。一组是单独的1个功能键,另一组是3×2(3行2列)的键盘阵列。本设计采用的键值扫描方案为:把这7个键看成是一个2×4(2行4列)的矩阵键盘,判断哪些键按下时,首先将两行都置高,然后将第一行置低,先读取第一列的值,若为低,则说明是按键7(SW7)被按下,第二列的值若为高,则直接读取第二列的值,若为低,则说明是按键1(SW1)被按下,不然,则再读取第三列的值依次类推。若均为高电平,则反过来,将第一行置为高,将第二行置为低,从第二列开始扫描,若为低,则说明是按键4(SW4)被按下,不然,则再读取第三列的值依次类推。最后会周期性的激活IST(由定时器线程保证)来确保按键已经抬起,抬起后返回TURE通知上层,否则若一直未抬起,则返回FALSE通知上层。

    4 结 语

    嵌入式系统需要针对不同的用户需求定制开发,因此在基于WinCE 5.0嵌入式系统开发过程中,需要从硬件电路及驱动程序两方面着手开发基础平台。WinCE 5.0驱动程序的开发是系统实现过程中的一个关键因素。本文介绍了基于SEP5010平台和嵌入式WinCE 5.0的一种矩阵键盘驱动的设计与实现,目前,此设计已经成功用于多款嵌入式手持设备。

    参考文献

    [1]国家专用集成电路工程技术研究中心.SEP5010用户手册,2002.

    [2]张冬泉.Windows CE实用开发技术.北京:电子工业出版社,2006.

    [3]时龙兴.嵌入式系统基于SEP3203微处理器的应用开发.北京:电子工业出版社,2006.

    [4]周疏林,宁杨.Windows CE.NET内核定制及应用开发[M].北京:电子工业出版社,2005.

    [5]周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.

    [6]董延.UCDOS键盘驱动模块的分析与改进.山东工程学院学报,1995,9(3):59-63.

    [7]吴旭,屈万里.S3C44B0X按键键盘的μClinux驱动程序设计.电子工程师,2006,32(5):50-51.

    [8]吴金华,李驹光,韦安.基于ARM9的多行列键盘设计及其驱动实现.微计算机信息,2008,24(2):123-124.

    [9]朱昊,张侃谕,由守明.嵌入式Linux下一种新的键盘设计和驱动程序开发.微型电脑应用,2005,21(3):44-47.

    [10]郑志国,赵万春.基于嵌入式Linux系统键盘驱动的原理及实现.计算机系统应用,2007(11):120-122.

    [11]林树新,吴朝晖.Linux键盘驱动的移植分析及实现.计算机工程,2005,31(2):211-213.

    作者简介

    时建龙 男,1981年出生,硕士研究生。研究方向为嵌入式系统设计。

    鲍 丹 女,1981年出生,硕士研究生,研究方向为嵌入式系统。

    黄少珉 男,1980年出生,讲师。研究方向为SoC系统设计,嵌入式系统低功耗设计。

    推荐访问:矩阵 键盘 驱动 设计 SEP5010