基于ARM平台的MEMS输入设备的固件设计

发布者:bettylove最新更新时间:2010-02-08 来源: 微计算机信息关键字:MEMS输入设备  嵌入式系统  ARM处理器  固件程序设计 手机看文章 扫描二维码
随时随地手机看文章

  1 引言

  MEMS(Micro Electro Mechanical System,即微机电系统)是指集微型传感器、执行器以及信号处理和控制电路、接口电路、通信和电源于一体的微型机电系统,具有体积小、重量轻、性能稳定、可大批量生产、性能一致性好、成本低等特点,将MEMS器件——加速度传感器应用于输入产品和嵌入式系统,满足它们对倾斜、运动、定位、振动等微小变化的测量 需求,以MEMS替换机械控制部件,为消费产品带来了一场革新。

  国外和港台地区有一些单位正在开展这方面的研究,并取得了一定的成绩。例如:香港 中文大学Alan H. F. Lam等几个博士生提出了一种基于微加速度传感器的虚拟键盘鼠标系统(MIDS),能同时具备鼠标和键盘的功能[1];加州大学伯克利分校设计了一种加速度感应手套,利用放置在手指上的二维加速度传感器感测手和手指的动作,实现电脑输入的功能[2]。

  2. 系统设计

  本文设计的无线输入系统是以加速度计为敏感元件,来完成鼠标的功能,并能够在三维 空间上同步操作者的三维运动,从而实现电脑输入的目的。本文采用美国AD公司的微加速 度传感器ADXL203,并结合Nordic半导体公司的射频收发器NRF2401,与Philips公司的 D12USB接口芯片形成一个硬件体系。该系统由两个子系统组成:远端子系统和主机端子系 统,具体的构成如图1所示。

系统设计

  在软件开发上,采用 ARM 嵌入式系统的开发理念,采用内置有ARM7 处理器核的 LPC2214 微控制器,开发新一代基于微加速度传感器的MEMS 无线输入设备。在调试初期, 以周立功公司的EasyARM2200 开发板为开发平台,使用ADS 作为开发环境。

  2.远端子系统设计

  远端子系统的主要任务是加速度计信号的采集,信号的放大、滤波等的处理,控制器 对射频无线发送的软件控制。主要的实现过程为:使用GPIO 口,并按照一定的采样频率将 加速度信号送入微控制器LPC2214,在LPC2214 内部进行信号放大和A/D 转换;并且按照 无线传输模块定义的格式将数据进行编码,再通过GPIO 口传送给无线射频模块。 主程序主要实现各个器件的初始化和任务的调用。

  int main(void)

  {

  TargetInit();

  Init_RF();

  Init_ADC();

  Init_Transmitter();

  TaskMouse();

  return 0;

  }

  在完成各个模块的初始化之后,执行Taskmouse 函数。Taskmouse 函数是主执行函数,包含了GetMousePos()、ModeSelect()、Get_ADCValue_X()和Get_ADCValue_Y()等子函数。调用该函数就可以执行加速度计信号采集、鼠标位置确定、系统工作模式选择等程序行。 获取鼠标位置信息的示意程序如下所示:

  void GetMousePos(uint8 *buf, uint8 shift)

  {

  uint8 i;

  uint8 sampf = 50;

  uint32 dpi = 100;

  uint32 sum_x, sum_y;

  sum_x = sum_y = 0;

  for (i = 0; i < sampf; ++i) {

  sum_x += Get_ADCValue_X(dpi);

  sum_y += Get_ADCValue_Y(dpi); }

  buf[0] = (sum_x / sampf) >> shift;

  buf[1] = (sum_y / sampf) >> shift;

  }

  3.主机端子系统设计

  在主机端子系统中,NRF2401 接受远端子系统的数据并从I/O 口进入LPC2214,数据通 过协议等处理为鼠标格式,最后通过USB 接口发送给主机。在该模块中,我们采用了操作 系统来实现多任务处理。

  3.1 μC/OS-II 操作系统的移植

  我们使用的 μC/OS-II 是一个完整、可移植、可固化、可剪裁的占先式实时多任务的实 时操作系统内核,使用标准的ANSIC 语言编写, 并包含一段汇编语言代码,被广泛地应用 于各种架构的微处理器上。

   在本系统中,μC/OS-II 的移植主要是修改3 个与ARM 处理器体系结构相关的文件: OS_CPU.H、OS_CPU.C 和OS_CPU_A.ASM。OS_CPU.H 文件为系统通用量设置的移植文 件,采用C 语言描述。包含数据类型定义、堆栈单位、堆栈增长方向和宏定义,需根据处 理器进行相应修改;OS_CPU.C 文件为系统管理代码的移植文件, 采用C 语言描述; OS_CPU_A.ASM 文件为处理器相关代码的移植文件, 采用ARM 的汇编语言描述。

  3.2 控制器编程

  将操作系统成功移植到LPC2214 上后,就可以对主机端系统进行软件设计。下面是主 机端主函数的代码:

  int main (void)

  {

  OSInit();

  OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[127], 5);

  OSStart();

  }

  主函数首先对操作系统进行初始化,初始化完成后,创建启动任务,设置任务的优先级, 并开始进行多任务操作。启动任务TaskStart 主要完成各个模块的初始化,包括开发板的初 始化TargetInit(),射频芯片的初始化Init_RF(),控制器AD 转换的初始化Init_ADC(),USB 接口芯片的初始化Init_D12()等,并将射频无线接受设置为接收模式。最后调用主执行函数 TaskDisplay()进行任务处理。

  3.3 USB 编程

  在主机端软件设计中,USB接口设计是非常重要的一环。USB接口,即通用串行总线。 这是针对PC机外设的一种新型接口技术,具有终端用户使用方便、应用性广泛、能同步传 输宽带、灵活性强和实现成本低等特性。USB的基本通信流和分层模型如图2所示。

USB的基本通信流和分层模型

  为简化USB 设备的开发过程,USB 提出了设备类的概念。HID(Human Interface Device) 设备类,即人机接口设备。典型的HID 设备如键盘、鼠标。客户软件可以直接使用操作系 统内置的HID 设备类驱动程序(hidclass.sys)和HID 小驱动程序(hidusb.sys)与HID 设备进 行通信。报告描述符用于提供HID 设备和主机间交换数据的格式。根据该输入设备的实现 要求和系统定义的鼠标协议格式,HID 类设备的报告描述符如下所示:

HID 类设备的报告描述符

HID 类设备的报告描述符

  4 结束语

  本文讨论了基于MEMS的无线输入设备,主要介绍了在嵌入式环境下,输入设备的固件编程设计。本文将系统分成两个子系统,并对他们进行分别介绍,给出了子系统的简单实现流程和函数的调用,并列出了一部分程序行。此方案的子程序具有易移植性,很容易在其他 领域中使用。

  基于MEMS的无线输入设备,其主要部件依托MEMS表面微加工和体硅加工的特殊工艺,使系统在尺寸、性能等方面有了提高,并且作为输入设备发展的新形式,减少了设备之间连线的繁琐,扩大了其使用的空间。随着信息技术和MEMS技术的继续发展,基于MEMS 技术的无线输入设备会更加可靠、方便。

  本文创新点:提出了基于MEMS器件的电脑输入模型,将ARM7和μC/OS-II操作系统相 结合,应用于输入系统,并完成了样机的程序实现。

关键字:MEMS输入设备  嵌入式系统  ARM处理器  固件程序设计 引用地址:基于ARM平台的MEMS输入设备的固件设计

上一篇:Silicon Labs在IIC-China展示创新技术
下一篇:基于AT89C51单片机的变频调速控制系统设计

推荐阅读最新更新时间:2024-03-16 12:28

多总线UART芯片在嵌入式系统设计中的应用
  本文介绍了专为嵌入式系统设计的VK32系列新型多总线接口通用异步串行收发接器(UART)器件的原理以及在税控POS、远程自动抄表系统、嵌入式车载信息平台和串口服务器中的应用技术。   UART产生于上个世纪70年代,是第一块大规模集成电路。1981年的推出的IBM PC采用了8250 UART与外设进行数据通信,直到上个世纪末,UART一直是PC中最主要的串行通信接口。随着高速串行总线USB的出现,USB以其诸多的优点取代了UART成为个人电脑中应用最广泛的串行接口。   而在嵌入式领域,由于UART具有操作简单、工作可靠、抗干扰强、传输距离远(组成485网络可以传输1,200米以上),设计人员普遍认为UART是从CPU或微控
[嵌入式]
基于嵌入式系统的GPRS设计
嵌入式系统就是一个具有特定功能或用途的计算机软硬件结合体,或指装入另一个设备并且控制该设备的专用计算机系统。嵌入式系统的最大特点是其具有目的性和针对性,即每一套嵌入式系统的开发都有其特殊的应用场合与特定功能。嵌入式系统包含硬件和软件两部分:硬件架构以嵌入式处理器为中心,配置存储器、I/O设备、通信模块等;软件部分以软件开发平台为核心,向上提供应用编程接口API,向下屏蔽具体硬件特性的板级支持包BSP。嵌入式系统中,软件和硬件紧密配合,协调工作,共同完成系统预定的功能。   GPRS是General Packet Radio Service的简称,即通用无线分组业务。它是基于现在运行的GSM基础上发展的数据业务,类似于固定交换
[工业控制]
基于<font color='red'>嵌入式系统</font>的GPRS设计
风河助嵌入式系统开发商快速搭建应用开发平台
Intel全资子公司风河系统公司(Wind River)日前宣布,与处理器板厂商合作伙伴共同推出全新Embedded Development Kit(嵌入式开发工具包),帮助嵌入式开发人员显著加速嵌入式应用开发。利用这个多方合作推出的新产品,嵌入式开发人员可在一小时以内启动嵌入式应用的开发项目,而传统的应用开发项目启动时间通常需要长达几天乃甚至数周。作为Wind River On-Board Program的一部分,Embedded Development Kit将处理器板与领先业界并经过充分优化的风河操作系统、开发工具、嵌入式hypervisor及图形处理软件整合为一体。目前,来自Emerson Network Power
[嵌入式]
嵌入式系统看现代计算机产业革命
摘要 人类近代史上有两次重大的产业革命: 一次是18世纪的由蒸汽机推动的第1次产业革命,另一次是当前人们正面临着始于20世纪中期,由集成电路开启的现代计算机产业革命。现代计算机产业革命是一场智力革命,以普遍的智能化工具代替人的脑力劳动。嵌入式系统成为智能化工具的归一化智力内核。现代计算机产业革命构建的知识平台,将资本经济推向知识经济时代。知识平台的广泛使用必将对人类社会经济、生活方式产生极其重大的影响。 关键词 产业革命 嵌入式系统 知识经济 知识平台 时空量子化 智力平台 智力嵌入   现代计算机是微处理器技术基础上的数字计算机,现代计算机产业革命是一场空前的智力革命,它将人类独有的知识行为能力(智力)集成到工具中,使人类工
[嵌入式]
基于嵌入式系统的负压吸引器设计
为了稳定精确地将病人术后腹腔内积累的各种脏器分泌液排出体外,提出一种基于嵌入式系统的负压吸引器。该系统采用气压 传感器 、重力感应器、PH值传感器、电磁阀和薄膜泵等模块,通过检测病人体内的腔压来调整负压实现体液的引流,并能实时监控病人排出液的各项参数。经过测试,该系统能动态控制负压引流并精确测量排出体液的参数,具有稳定可靠的特性。 由于很多病人手术后脏器创口没有得到有效的愈合,此时会在腹腔内积累各种液体。最为常见的就是在临床中,为了保证肠道患者在术后能尽快康复,就需要将来自胃的低PH值的消化液借助引流设备排出体外。目前国内外市场上通常使用一次性负压吸引袋或机械式吸引器将体液引流至体外。但是这种方法产生的负压并不稳定,吸引的
[单片机]
基于<font color='red'>嵌入式系统</font>的负压吸引器设计
ARM处理器设计的电机电物理量采集系统
引言 自19世纪发明发电机和电动机以来,由于电能应用方便,电动机的性能优良,便于控制,使用与操作简单,从而得到了迅速普及,应用范围越来越广.然而,由于电机运行机制复杂,长期处于高速运转和高电压、强磁场环境之下,运行环境恶劣,要求电机设备不出故障是不现实的,绝对安全可靠的电机设备也是根本不存在的l1J.因此,我们只能从预防故障和减少损失的角度出发,及时发现电机的异常,掌握设备的运行状态.对已经形成的或正在形成的故障进行分析诊断,判断故障的部位和产生的原因,并及早采取有效的措施,防患于未然.这就需要我们能实时的精确的采集电机在运行中的各种物理量,进而进行有效的分析、判断故障.传统的数据采集系统多以8/16位单片机构成控制系统,其
[单片机]
<font color='red'>ARM处理器</font>设计的电机电物理量采集系统
ARM与台积公司携手为下一代64位ARM处理器进行优化
2012年7月23日,中国上海——ARM®与台积公司今日共同宣布一项为期多年的合作协议,将双方的合作延续至20纳米工艺以下,通过台积公司的FinFET工艺提供ARM的处理器技术,让芯片设计商在应用处理器领域也能扩展其市场领先优势。此项合作将为ARMv8架构下的新一代64位ARM 处理器、ARM Artisan® 物理IP以及台积公司的FinFET工艺技术进行优化,以应用于要求高性能与节能兼具的移动及企业级市场。 此次合作涵盖了两家公司的技术信息共享与反馈,协助提升ARM硅知识产权与台积公司工艺技术的开发。ARM将藉助工艺信息,打造兼顾功耗、性能与面积(Power, Performance and Area, PPA)的优化完整解
[嵌入式]
基于ARM-μCLinux嵌入式系统启动引导的实现
   32位ARM嵌入式处理器具有高性能、低轼耗的特性,已被广泛应用于消费电子产品、无线通信和网络通信等领域。ΜCLinux是专门为无MMU处理器设计的嵌入式操作系统,支持ARM、Motorola等微处理器。目前国内外采用ARM-μCLinux作为嵌入式系统非常普遍。而嵌入式系统的启动引导技术是嵌入式系统开发的一个难点。系统启动引导的成功与否决定了应用程序的运行环境是否能正确构建,即系统启动成功是应用正确运行的前提。 常用的嵌入式系统启动方法是先通过JTAG将嵌入式操作系统内核与进Flash,再由其带的引导程序bootloader完成嵌放式系统的启动引导工作。这种方法要借助昂贵的JTAG设备完成操作系统内核 的烧写工
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved