随着科技的发展, 嵌入式及移动互联网的应用越来越广泛,二者以其自身的优势在各自领域都占有一席之地。目前基于Android操作系统的手机进行移动应用开发非常火热,Android以其源代码开放,硬件选择丰富,无缝结合google 等特点,自发布以来 Android 立刻受到了业界的广泛关注。而嵌入式ARM7 微处理器LPC2142具有较高的集成度和高性价比, 很适合于数据采集系统设计。因此,了解Android平台的组成、系统架构API和应用程序框架,并掌握该平台移动应用的开发方法将为从事移动互联网开发的企业和个人带来非常广阔的前景。
Google 对Android平台的SDK更新很快,目前已发布的平板Android 3.1(API level 12)及以上版本实现了对USB 外设模式和主机模式的支持,并遵循USB2. 0 通讯协议。本文结合两者的突出优点设计了一种新型数据采集系统,以下将详细阐述Android 3. 1平台下的USB 应用程序开发的完整过程,以及与LPC2142之间的USB 通信功能。
1 Android USB应用程序开发
1 . 1 Android 开发框架
Android系统架构由5部分组成,分别是:Linux Kernel 、Android Runtime、Libraries 、Application Frame-work、Applications。
Android开发主要有三种类型( 如图1 所示) :
移植开发和电话系统;
Android应用程序开发;
Android系统开发;
本文中的Android应用程序的开发是在Android系统第三个层次(Java 框架) 和第四个层次(Java 应用)之间的接口之上开发出来的。
图1 Android开发详解
1 . 2 Android USB 接口
Android支持各种USB 外围设备,通过两种模式来支持Android USB外设( 实现了Android外设协议的硬件) :USB 外设模式和USB 主机模式。Android将在新的平板电脑版Honeycomb 3 . 1 和智能手机版Gingerbread 2. 3 .4 中首次支持USB 外设模式,该支持包括一种新的Open Accessory API,含有谷歌提供的一个USB 支持库。而在Android3 . 1 及以上版本才支持主机模式。Android从机设备只能和Android主机设备连接,而主机模式可以连接其他USB 设备,故本设计采用Android3 . 1主机模式连接LPC2142USB 接口。当Android设备处于主机模式时,它扮演USB主机角色并为总线供电。如图2 所示。
Android3 .1(API 12)更新的API为Android开发者提供了应用程序开发直接可用的USB A PI ,这个USB类是在android.Hardware. usb 包下,具体介绍如下:
图2 USB 主机模式
UsbAccessory 本类是针对Open Accessory API设计的。UsbConstants作为USB 常量定义,在Linux内核文件linux/usb/ch9 . h中。UsbDevice获取USB设备的信息,比如说类型、制造商等等。
UsbDeviceConnection 这个是USB 设备传输控制的核心。UsbEndpoint 获取一个USB 终端信息。UsbInt erface USB 底层接口,获取一些信息底层信息,比如说通讯协议,等等。UsbManager USB管理类,它提供了识别和使用的USB 设备和USB 配件通讯方法。应用程序可以获取一个UsbManager实例,然后用于连接的设备或配件清单查询,管理、通信。UsbRequest 核心的USB请求处理类,支持读写操作,以字节数组方式处理一个 UsbEndpoint,Android12.3提示这个类类似WinCE串口通讯的CreateFile部分,可以进行数据流的读写。
1.3 Android 应用程序组件
Android应用程序由松散耦合的组件组成。各个应用是相互独立的,并运行在自己的进程当中,要进行Android的移动应用程序的开发,开发人员需要熟悉以下几个基本组件:
Activity(活动) 应用程序中每个屏幕都是Activity类的扩展,活动使用视图来形成显示信息和响应用户动作的图形界面。Broadcast Receiver(广播接收器) 通过创建和注册广播接收器,应用程序可以监听到那些匹配特定的过滤标准的广播。Intent( 意图) 应用程序间传递消息的框架。View 是Android中图形用户界面的基类,提供可视化界面的展示。
1 . 4 Android 应用程序设计
Android应用程序开发是由Java语言实现的,具体是由Google为开发者提供的一些类和接口组成。本设计主要用到USB 类、数据存储SQLiteDatabase类、视图显示SurfaceView 类以及一些Android 小组件类等。程序设计框架如图3。
图3 Android 程序框架
该设计共创建五个Activity来实现人机交互界面,使用户操作起来方便快捷。MainMenuActivity 是主界面,由这一界面可以进入以下三个界面:USBconnect Activity是USB 连接界面,在这个类里实现设置要连接的USB 的端口参数,查找并发现USB 设备,按条件枚举USB 设备,得到连接设备的权限,连接USB设备,终止已连接的USB 设备等功能,如USB 设备连接成功则进入下一界面;USBMonitorActivity 是接收USB 数据的界面,USB 连接成功后,开始接收数据,并把已接收的数据以文件形式存入 SD 卡中;FileListActivity 是显示已存入SD卡所有文件的列表界面,单击文件进入显示波形界面。除了Acti vity ,该程序还注册了BroadcastReceiver( 广播消息) 来接收系统USB 连接消息的通知。同时各个Activity之间的通信是由Intent 实现的,界面的一些按钮、布局等是由View实现的。
2 LPC2142 前端采集平台设计
本设计前端采用ARM7处理器LPC2142作为硬件开发平台,LPC2142是PHILIPS公司生产的基于支持仿真和嵌入式跟踪的32位ARM7TDMI-S内核的CPU ,带有64kB的高速Flash存储器和16kB 的RAM,最高工作频率能够高达60M Hz。同时集成了A/D 、定时器、串口等资源, 与LPC2132 相比最突出的特点就是内置了USB2.0 Device( 全速) 控制器。该芯片内部资源比较丰富, 特别适用于工业控制等嵌人式系统。该设计总体框图如图4 所示。
图4 系统总体框架
2 . 1 A/D 采集接口
LPC2142 包含2个模-数转换器,提供6/14 路模拟输入,每个通道的转换时间低至2.44vs 。具体特性如下:
10位逐次逼近模数转换器6 或8 个管脚复用为输入脚测量范围:0~3 . 3V单路或多路输入的突发转换模式可选择由输入跳变或定时器匹配信号触发转换2个转换器全部启动命令A/D 转换器的基本时钟由VPB 时钟提供,每个转换器包含一个可编程分频器,可将时钟调整至逐步逼近转换所需的4 . 5MHz 。
2 . 2 LPC2142与USB 模块接口
LPC2142 微控制器内部带有一个USB 设备控制器,该控制器支持32个固定配置的物理端点,并完全兼容USB2. 0 全速规范。该控制器嵌于CPU 芯片内部,这样的集成方式不仅使 USB 设备控制器与 CPU 之间的数据交换可以稳定地达到很高的速度,而且提高了芯片的性价比。USB 接口电路如图 5. LPC2142 的P0.27和P0.26 引脚的第二功能控制 USB 数据的传输。Android USB 主机与LPC2142 USB设备之间的通信完全遵循USB2. 0 全速规范,根据规范建立USB 连接的命令流程如图6 。
图5 USB 接口电路
图6 USB 通信命令
2 . 3 应用
该系统能够成功实现Android3.1平板与LPC2142之间的USB 数据通信,传输速率完全满足USB2. 0 全速规范。与传统数据采集系统相比更具优越性,既拥有Android完美的人机交互界面,又兼具LPC2142USB高速采集的优点,具有很强的实用性。为测试该系统运行正常,利用LPC2142发送一组来自麻省理工的心电数据进行测试,为配合Android支持的USB 传输模式,LPC2142 USB按批量传输方式,一次可传送最大包长度为64字节,Android平板也采用批量传输方式,设置的接收时间与LPC2142 的发送时间一致,接收函数是bulkTransfer (UsbEndpoint endpoint,byte[] buffer,int length ,int timeout) 。为说明测试结果,将接收的数据以文件形式存入数据库与原数据进行对比正确,说明测试结果非常标准,测试波形如图7 所示。
3 结语
本文介绍了Android平台的系统构成以及基于Android平台平板电脑USB 应用程序的开发和设计,并将这一应用与AMR 平台紧密结合开发出一种新型数据采集系统,即基于Android平台和AMR平台相结合的USB 数据采集系统。可以看出,Android平板电脑在应用程序开发上已与PC相媲美,而ARM7 处理器LPC2142 具有USB 通用串行总线接口,可以进行高速数据采集的处理,该平台具有良好的实用性, 可应用于需要实时高精度测量电参数的领域,而且方便快捷。相信未来随着 Android 技术的不断发展平板电脑应用程序会越来越丰富,应用领域会越来越广。