基于ARM平台的MEMS输入设备的固件设计-设计应用_第1页
基于ARM平台的MEMS输入设备的固件设计-设计应用_第2页
基于ARM平台的MEMS输入设备的固件设计-设计应用_第3页
基于ARM平台的MEMS输入设备的固件设计-设计应用_第4页
基于ARM平台的MEMS输入设备的固件设计-设计应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑基于ARM平台的MEMS输入设备的固件设计-设计应用摘要:本文研究了基于MEMS加速度计的电脑无线输入设备,给出了输入设备系统的整体构成和主要的硬件组成。本文重点讨论了输入系统的固件设计,即在ARM嵌入式平台基础上,引入嵌入式操作系统,对输入设备的两个子模块进行了软件设计,并给出了一些相应的程序行。

1引言

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

国外和港台地区有一些单位正在开展这方面的研究,并取得了一定的成绩。例如:香港中文大学AlanH.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口传送给无线射频模块。主程序主要实现各个器件的初始化和任务的调用。

intmain(void)

{

TargetInit();

Init_RF();

Init_ADC();

Init_Transmitter();

TaskMouse();

return0;

}

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

voidGetMousePos(uint8*buf,uint8shift)

{

uint8i;

uint8sampf=50;

uint32dpi=100;

uint32sum_x,sum_y;

sum_x=sum_y=0;

for(i=0;isampf;++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上后,就可以对主机端系统进行软件设计。下面是主机端主函数的代码:

intmain(void)

{

OSInit();

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

OSStart();

}

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

3.3USB编程

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

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

4结束语

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

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

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论