基于嵌入式Linux智能仪器多输入设备设计与实现

上传人:豆浆 文档编号:11827969 上传时间:2017-09-03 格式:PDF 页数:3 大小:260.14KB
返回 下载 相关 举报
基于嵌入式Linux智能仪器多输入设备设计与实现_第1页
第1页 / 共3页
基于嵌入式Linux智能仪器多输入设备设计与实现_第2页
第2页 / 共3页
基于嵌入式Linux智能仪器多输入设备设计与实现_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于嵌入式Linux智能仪器多输入设备设计与实现》由会员分享,可在线阅读,更多相关《基于嵌入式Linux智能仪器多输入设备设计与实现(3页珍藏版)》请在金锄头文库上搜索。

1、在 嵌入式产品实际工作时可能会同时存在两个或两个以上的输入设备提供给用户对系统进行控制 , 包括图形用户界面操作 、向系统发送控制指令 、信息录入 、数据查询 、插入 、修改 、系统参数设置等 。 本文将要介绍的嵌入式系统就具有所述特点 ,系统既具有仪器面板上的矩阵式薄膜键盘 (提供常用操作功能键及09 数字键 ),又具有外接 PS2 接口 PC 键盘 (提供复杂信息的录入及设置 );系统设计要求 :同时支持这两种不同种类的键盘 ,并且可以同时独立正常工作互不影响 。本文结合一类智能医学检验仪器的开发 , 详细讨论系统中多输入设备的接口扩展及驱动程序设计与实现 。1 硬件系统总体结构如图 1

2、所示 ,系统由 ARM9(三星公司的 S3C2440)、DSP(TI 公司的 TMS320F2812)及 CPLD(Xilinx 公司的 XC95144)等模块组成的双 CPU 架构的新型智能医学检验仪器 。 ARM9 作为管理机负责系统中日常事务的管理 (人机交互 、 发送控制指令 、数据存储 、数据管理 、系统参数设置 、数据传输 、通信等 );DSP 负责系统底层控制 (执行机构控制 、数据采集 、数据处理等 );ARM 与 DSP 之间通过串行外设接口 SPI 互联 ,进行通信 ;CPLD 逻辑功能强大 , 主要用于产生数据采集辅助逻辑控制信号 、执行机构控制信号及人机交互等外设的扩展

3、 。图 1 系统总体结构2 输入设备简介本文主要围绕 ARM9 和扩展外设的 CPLD 模块进行讨论 。系统设计要求对矩阵式薄膜键和 PS2 键盘的支持 , 它们是两种完全不同种类的设备 ,工作原理及电气结构都不相同 ,接下来先对这两类输入设备工作原理做一个简单的介绍 。21 矩阵式薄膜键盘由于矩阵式薄膜键盘结构简单 、易于实现等特点 ,被广泛应用于嵌入式系统输入设备的实现 ,如仪器面板简易键盘的设计 ,给用户提供系统常用控制操作 、简单信息录入等功能 。矩阵式薄膜键盘由行选和列选线构成 ,行列相交之处都存在一个按键 ,类似矩阵中的一个元素 ,其位置由所在行列值唯一确定 ;正常情况下相交之处存

4、在很小的空隙相互分离 ,当有键按下时相交之处的行列线接触导通 。 通过一定的外围接口电路和驱动程序处理 ,可得到矩阵键盘所按下键的扫描码 (Scan Code),扫描码经系统程序解码 ,控制器执行相应的命令或输出 。22 PS2 键盘PS2 接 口 是 最 常 见的鼠标和键盘接口 , 俗称“小口 ”。 其接口定义可参考相关文献 。主设备 (主机 )采用插座 ,从设备 (键盘 )采用插头 ,其中 ,数据和时钟都是集电极开路的 , 接口电路必须增加上拉电阻 ,如图 2所示 。221 通信协议PS2 键盘遵循一种双向同步串行协议 。 也就是说每次数据线上发送一位数据并且在每个时钟脉冲边沿被读入 ;

5、键盘可以发送数据到主机而主机也可以发送数据到设备 , 但主机总是在总线上有优先权 ,它可以在任何时候抑制来自于键盘的通信 ,只要把时钟拉低即可 。基于嵌入式 Linux 智能仪器多输入设备设计与实现张云帆 马旭东 (东南大学自动化学院 ,江苏 南京 210096)Multiinput Devices Based on Embedded Linux Intelligent Instrument摘 要介绍了一种基于 ARM9 平台的嵌入式 Linux 操作系统智能仪器的硬件及软件架构 ,详细讨论了 CPLD 作为输入设备接口 ,并使用轻量级图形用户界面支持系统 (MiniGUI)作为人机交互中间件

6、时 ,系统同时支持多个输入设备的接口 、驱动设计与实现 。 该技术已成功应用于智能医学检验仪器 ,还可以用于其它智能仪器和嵌入式测控系统开发 。关键词 :多输入设备 ,嵌入式系统 ,Linux,ARM,CPLD,MiniGUIAbstractThe hardware and software architecture of intelligent instrument based on ARM9 Embedded Linux Operating System ispresented in this paperA solution is proposed in detail,including

7、input device interface,driver design and implementation thatthe system supports multiple input devices at the same timeIt uses CPLD as the interface and lightweight Graphical UserInterface support system (MiniUGI) as the Humancomputer Interaction MiddlewareThe technology has been successfully ap-pli

8、ed to intelligent medical testing instrumentKeywords:Multiinput devices,Embedded System,Linux,ARM,CPLD,MiniGUI图 2 PS2 接口上拉电阻基于嵌入式 Linux 智能仪器多输入设备设计与实现6工业控制计算机 2009 年 22 卷第 11 期从键盘发送到主机的数据在时钟信号的下降沿被读取 ,从主机发送到键盘的数据在上升沿被读取 。 无论通信的方向怎样 ,键盘总是产生时钟信号 (CLK),如果主机要发送数据 ,它必须首先告诉设备开始产生时钟信号 。 PS2 键盘的最大时钟频率是33kHz

9、,大多数设备都工作在 1020kHz,一般典型值为 :15kHz左右 。考虑到系统中外接 PS2 键盘仅限于设备到主机的通信 ,即主机只接收键盘发送的数据 (扫描码 )而不对键盘发送命令字 ,这里我们只讨论设备 (键盘 )到主机 (控制器 )的通信 。如图 3 所示 , 设备发送到主机的每个数据帧由 11 位组成 :一个起始位 ,总是 0;8 个数据位 ,低位在前 ;一个校验位 ,奇校验 ;一个停止位 ,总是 1。图 3 PS2 设备到主机通信数据帧格式及时序222 键盘编码键盘内部扫描控制电路不停地扫描或监视按键矩阵 。 如果它发现有键被按下 、释放或被按住 ,控制电路将发送键盘扫描码的信息

10、包到主机 。扫描码有两种不同的类型 :通码和断码 。 当一个键被按下或按住就发送通码 ;当一个键被释放就发送断码 。 每个按键被分配了唯一的通码和断码 , 这样主机通过查找唯一的扫描码就可以确定是哪个按键 。 所有按键的通断码组成了扫描码集 ,目前有三套标准的扫描码集 ,分别是第一套 、第二套和第三套 ,所有现代的键盘默认使用第二套扫描码键盘码 。第二套键盘编码举例 ,如表 2 所示 。表 2 第二套键盘编码举例23 输入设备接口扩展由于系统设计要求同时支持以上两种类型键盘 , 并且相互独立工作互不影响 ,对输入设备接口的扩展有以下几种方法 :1)软件扫描 。 利用控制器空闲 GPIO(通用

11、IO 口 )作为两种键盘接口 ,结合软件程序动态扫描矩阵键盘 、软件模拟 PS2接口通信协议 。优点 :IO 口直接连接 ,硬件电路结构简单 ;缺点 :完全由软件实现 ,控制器负荷较大 ,可扩展性差 。2)使用集成芯片 。 使用矩阵键盘专用集成芯片和 PS2 接口专用控制芯片 。优点 :使用专用集成芯片 ,无需繁琐硬件电路设计 ;缺点 :每个输入设备都需要一个集成芯片 ,占用 PCB 面积大 ,成本高 。3)复杂可编程逻辑器件 (CPLD)。考虑到系统除了扩展两个输入设备外 ,还需要扩展其它外设接口 (如 :微型热敏打印机并行接口等 ),CPLD 集成度高 ,利用硬件描述语言 ,很容易将多个设

12、备控制电路集成到一个芯片 ,简化系统硬件电路结构 。优点 : 键盘扫描过程完全由硬件完成 , 减轻控制器工作负荷 ,集成度高 、可在线编程 、设计灵活 、便于扩展 、维护 、升级 ;缺点 :需使用硬件描述语言进行设计 ,硬件电路逻辑设计工作量大 。综合分析对比以上三种方法 , 可以看出相比之下第三种方法是一个较好的设计方案 ,系统采用此方案进行设计 。24 硬件接口电路逻辑设计CPLD 硬件接口电路使用硬件描述语言 (VHDL)进行逻辑综合设计 ,两个模块工作流程如图 4、图 5 所示 。图 4 矩阵键盘扫描码读取流程 图 5 PS2 键盘扫描码读取流程(1)薄膜矩阵键盘模块设计键盘扫描过程如

13、图 4 所示 ,此模块基于矩阵 (matrix)扫描键盘原理设计 。 CPLD 内部产生列扫描信号 (KBScan)对薄膜键进行扫描 ,探测是否有键按下 ,若有键按下 ,通过内部硬件电路对键盘去抖动 ,内部时序控制逻辑读入行选信号 (KBRow)得到被按下键的键值 ,CPLD 时序控制逻辑紧接着向主机产生中断请求信号 (INT),主机通过中断服务子程序读入扫描码 ,并进行解码 。(2)PS2 键盘模块设计扫描码读取过程如图 5 所示 , 此模块实现了接收键盘发送的串行数据并对其进行奇偶校验 , 并将键值转换为并行数据输出 ,同时产生对主机的中断请求信号 ,通知主机读取扫描码 。 在接口逻辑时序

14、设计过程中 ,考虑到由 PS2 键盘发出的时钟信号(PS2SCLK)和数据信号 (PS2SDAT)并非规则的脉冲信号 ,并在实际工作时发现其信号同时又容易受到了外部干扰 , 波形产生非常明显的毛刺和畸变 。 基于去除干扰和接收数据的稳定性及可靠性的考虑 , 设计中引入了外部高频同步时钟信号 (CLK)对键盘发出的时钟信号和数据信号进行同步 , 有效地消除了波形畸变对数据稳定性的影响 。 测试表明引入同步时钟大大提高了数据接收的稳定性和可靠性 , 能够准确及时接收到键盘扫描码 ,达到设计要求 。3 Linux 设备驱动程序设计本系统嵌入 Linux 操作系统 , 并使用 MiniGUI 作为图形

15、用户界面中间件 ,需要设计用于 Minigui 输入引擎 (IAL)的设备驱动程序 。系统输入设备字符驱动程序设计 :驱动程序使用内核 “模块 ”设计 ,驱动可以灵活的动态加载到内核中去 ;为了简化驱动程序模块设计 ,将两个设备的驱动放在一个模块中实现 ,系统运行时只需加载一个模块 , 在驱动程序中同时响应两种设备中断信号 , 并且在中断处理程序中采用顶半部和底半部机制进行处理 ;在驱动中引入并发和互斥机制 ,对获得的键盘扫描码进行处理 ;最终实现作用于输入设备的系统调用 。731 中断处理设备的中断会打断内核中进程的正常调度和运行 , 系统对更高吞吐率的追求势必要求中断服务程序尽可能地短小精

16、悍 。但是 ,这种愿望往往和现实并不相符 。 在大多数实际系统中 ,当中断到来时 ,要完成的工作往往并不会是短小的 ,它可能要进行较大量的耗时处理 。为了在中断执行时间短和完成大量工作之间找到一个平衡点 ,Linux 将中断处理程序分解为两个部分 :顶半部 (top half)和底半部 (bottom half),如图 6 所示 。图 6 Linux 中断处理机制在本系统中 , 键盘中断服务程序除了读取设备产生的扫描码外 ,还要将扫描码转换为系统能够识别的键值 ,提供给系统应用程序 。 扫描码转换是一个工作量大 、较耗时的处理过程 。 为了提高系统性能 ,将中断程序中读取扫描码 (紧急硬件操作 )过程安排在顶半部 ,将键值转换过程 (延缓的耗时操作 )安排在底半部 。 Linux 实现底半部的机制主要有 tasklet、 工作队列和软中断 ,这里我们采用 tasklet 来实现底半部 。 下面将介绍中断处理具体的实现过程 :PS2 键盘中断服务子程序 :static void ps2i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号