隨著科技的發(fā)展, 嵌入式及移動(dòng)互聯(lián)網(wǎng)的應(yīng)用越來越廣泛,二者以其自身的優(yōu)勢在各自領(lǐng)域都占有一席之地。目前基于Android操作系統(tǒng)的手機(jī)進(jìn)行移動(dòng)應(yīng)用開發(fā)非?;馃幔珹ndroid以其源代碼開放,硬件選擇豐富,無縫結(jié)合google 等特點(diǎn),自發(fā)布以來 Android 立刻受到了業(yè)界的廣泛關(guān)注。而嵌入式ARM7 微處理器LPC2142具有較高的集成度和高性價(jià)比, 很適合于數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)。因此,了解Android平臺(tái)的組成、系統(tǒng)架構(gòu)API和應(yīng)用程序框架,并掌握該平臺(tái)移動(dòng)應(yīng)用的開發(fā)方法將為從事移動(dòng)互聯(lián)網(wǎng)開發(fā)的企業(yè)和個(gè)人帶來非常廣闊的前景。
Google 對Android平臺(tái)的SDK更新很快,目前已發(fā)布的平板Android 3.1(API level 12)及以上版本實(shí)現(xiàn)了對USB 外設(shè)模式和主機(jī)模式的支持,并遵循USB2. 0 通訊協(xié)議。本文結(jié)合兩者的突出優(yōu)點(diǎn)設(shè)計(jì)了一種新型數(shù)據(jù)采集系統(tǒng),以下將詳細(xì)闡述Android 3. 1平臺(tái)下的USB 應(yīng)用程序開發(fā)的完整過程,以及與LPC2142之間的USB 通信功能。
1 Android USB應(yīng)用程序開發(fā)
1 . 1 Android 開發(fā)框架
Android系統(tǒng)架構(gòu)由5部分組成,分別是:Linux Kernel 、Android Runtime、Libraries 、Application Frame-work、Applications。
Android開發(fā)主要有三種類型( 如圖1 所示) :
移植開發(fā)和電話系統(tǒng);
Android應(yīng)用程序開發(fā);
Android系統(tǒng)開發(fā);
本文中的Android應(yīng)用程序的開發(fā)是在Android系統(tǒng)第三個(gè)層次(Java 框架) 和第四個(gè)層次(Java 應(yīng)用)之間的接口之上開發(fā)出來的。
圖1 Android開發(fā)詳解
1 . 2 Android USB 接口
Android支持各種USB 外圍設(shè)備,通過兩種模式來支持Android USB外設(shè)( 實(shí)現(xiàn)了Android外設(shè)協(xié)議的硬件) :USB 外設(shè)模式和USB 主機(jī)模式。Android將在新的平板電腦版Honeycomb 3 . 1 和智能手機(jī)版Gingerbread 2. 3 .4 中首次支持USB 外設(shè)模式,該支持包括一種新的Open Accessory API,含有谷歌提供的一個(gè)USB 支持庫。而在Android3 . 1 及以上版本才支持主機(jī)模式。Android從機(jī)設(shè)備只能和Android主機(jī)設(shè)備連接,而主機(jī)模式可以連接其他USB 設(shè)備,故本設(shè)計(jì)采用Android3 . 1主機(jī)模式連接LPC2142USB 接口。當(dāng)Android設(shè)備處于主機(jī)模式時(shí),它扮演USB主機(jī)角色并為總線供電。如圖2 所示。
Android3 .1(API 12)更新的API為Android開發(fā)者提供了應(yīng)用程序開發(fā)直接可用的USB A PI ,這個(gè)USB類是在android.Hardware. usb 包下,具體介紹如下:
圖2 USB 主機(jī)模式
UsbAccessory 本類是針對Open Accessory API設(shè)計(jì)的。UsbConstants作為USB 常量定義,在Linux內(nèi)核文件linux/usb/ch9 . h中。UsbDevice獲取USB設(shè)備的信息,比如說類型、制造商等等。
UsbDeviceConnection 這個(gè)是USB 設(shè)備傳輸控制的核心。UsbEndpoint 獲取一個(gè)USB 終端信息。UsbInt erface USB 底層接口,獲取一些信息底層信息,比如說通訊協(xié)議,等等。UsbManager USB管理類,它提供了識(shí)別和使用的USB 設(shè)備和USB 配件通訊方法。應(yīng)用程序可以獲取一個(gè)UsbManager實(shí)例,然后用于連接的設(shè)備或配件清單查詢,管理、通信。UsbRequest 核心的USB請求處理類,支持讀寫操作,以字節(jié)數(shù)組方式處理一個(gè) UsbEndpoint,
Android12.3提示這個(gè)類類似WinCE串口通訊的CreateFile部分,可以進(jìn)行數(shù)據(jù)流的讀寫。
1.3 Android 應(yīng)用程序組件
Android應(yīng)用程序由松散耦合的組件組成。各個(gè)應(yīng)用是相互獨(dú)立的,并運(yùn)行在自己的進(jìn)程當(dāng)中,要進(jìn)行Android的移動(dòng)應(yīng)用程序的開發(fā),開發(fā)人員需要熟悉以下幾個(gè)基本組件:
Activity(活動(dòng)) 應(yīng)用程序中每個(gè)屏幕都是Activity類的擴(kuò)展,活動(dòng)使用視圖來形成顯示信息和響應(yīng)用戶動(dòng)作的圖形界面。Broadcast Receiver(廣播接收器) 通過創(chuàng)建和注冊廣播接收器,應(yīng)用程序可以監(jiān)聽到那些匹配特定的過濾標(biāo)準(zhǔn)的廣播。Intent( 意圖) 應(yīng)用程序間傳遞消息的框架。View 是Android中圖形用戶界面的基類,提供可視化界面的展示。
1 . 4 Android 應(yīng)用程序設(shè)計(jì)
Android應(yīng)用程序開發(fā)是由Java語言實(shí)現(xiàn)的,具體是由Google為開發(fā)者提供的一些類和接口組成。本設(shè)計(jì)主要用到USB 類、數(shù)據(jù)存儲(chǔ)SQLiteDatabase類、視圖顯示SurfaceView 類以及一些Android 小組件類等。程序設(shè)計(jì)框架如圖3。
圖3 Android 程序框架
該設(shè)計(jì)共創(chuàng)建五個(gè)Activity來實(shí)現(xiàn)人機(jī)交互界面,使用戶操作起來方便快捷。MainMenuActivity 是主界面,由這一界面可以進(jìn)入以下三個(gè)界面:USBconnect Activity是USB 連接界面,在這個(gè)類里實(shí)現(xiàn)設(shè)置要連接的USB 的端口參數(shù),查找并發(fā)現(xiàn)USB 設(shè)備,按條件枚舉USB 設(shè)備,得到連接設(shè)備的權(quán)限,連接USB設(shè)備,終止已連接的USB 設(shè)備等功能,如USB 設(shè)備連接成功則進(jìn)入下一界面;USBMonitorActivity 是接收USB 數(shù)據(jù)的界面,USB 連接成功后,開始接收數(shù)據(jù),并把已接收的數(shù)據(jù)以文件形式存入 SD 卡中;FileListActivity 是顯示已存入SD卡所有文件的列表界面,單擊文件進(jìn)入顯示波形界面。除了Acti vity ,該程序還注冊了BroadcastReceiver( 廣播消息) 來接收系統(tǒng)USB 連接消息的通知。同時(shí)各個(gè)Activity之間的通信是由Intent 實(shí)現(xiàn)的,界面的一些按鈕、布局等是由View實(shí)現(xiàn)的。
2 LPC2142 前端采集平臺(tái)設(shè)計(jì)
本設(shè)計(jì)前端采用ARM7處理器LPC2142作為硬件開發(fā)平臺(tái),LPC2142是PHILIPS公司生產(chǎn)的基于支持仿真和嵌入式跟蹤的32位ARM7TDMI-S內(nèi)核的CPU ,帶有64kB的高速Flash存儲(chǔ)器和16kB 的RAM,最高工作頻率能夠高達(dá)60M Hz。同時(shí)集成了A/D 、定時(shí)器、串口等資源, 與LPC2132 相比最突出的特點(diǎn)就是內(nèi)置了USB2.0 Device( 全速) 控制器。該芯片內(nèi)部資源比較豐富, 特別適用于工業(yè)控制等嵌人式系統(tǒng)。該設(shè)計(jì)總體框圖如圖4 所示。
圖4 系統(tǒng)總體框架
2 . 1 A/D 采集接口
LPC2142 包含2個(gè)模-數(shù)轉(zhuǎn)換器,提供6/14 路模擬輸入,每個(gè)通道的轉(zhuǎn)換時(shí)間低至2.44vs 。具體特性如下:
10位逐次逼近模數(shù)轉(zhuǎn)換器6 或8 個(gè)管腳復(fù)用為輸入腳測量范圍:0~3 . 3V單路或多路輸入的突發(fā)轉(zhuǎn)換模式可選擇由輸入跳變或定時(shí)器匹配信號(hào)觸發(fā)轉(zhuǎn)換2個(gè)轉(zhuǎn)換器全部啟動(dòng)命令A(yù)/D 轉(zhuǎn)換器的基本時(shí)鐘由VPB 時(shí)鐘提供,每個(gè)轉(zhuǎn)換器包含一個(gè)可編程分頻器,可將時(shí)鐘調(diào)整至逐步逼近轉(zhuǎn)換所需的4 . 5MHz 。
2 . 2 LPC2142與USB 模塊接口
LPC2142 微控制器內(nèi)部帶有一個(gè)USB 設(shè)備控制器,該控制器支持32個(gè)固定配置的物理端點(diǎn),并完全兼容USB2. 0 全速規(guī)范。該控制器嵌于CPU 芯片內(nèi)部,這樣的集成方式不僅使 USB 設(shè)備控制器與 CPU 之間的數(shù)據(jù)交換可以穩(wěn)定地達(dá)到很高的速度,而且提高了芯片的性價(jià)比。USB 接口電路如圖 5. LPC2142 的P0.27和P0.26 引腳的第二功能控制 USB 數(shù)據(jù)的傳輸。Android USB 主機(jī)與LPC2142 USB設(shè)備之間的通信完全遵循USB2. 0 全速規(guī)范,根據(jù)規(guī)范建立USB 連接的命令流程如圖6 。
圖5 USB 接口電路
圖6 USB 通信命令
2 . 3 應(yīng)用
該系統(tǒng)能夠成功實(shí)現(xiàn)Android3.1平板與LPC2142之間的USB 數(shù)據(jù)通信,傳輸速率完全滿足USB2. 0 全速規(guī)范。與傳統(tǒng)數(shù)據(jù)采集系統(tǒng)相比更具優(yōu)越性,既擁有Android完美的人機(jī)交互界面,又兼具LPC2142USB高速采集的優(yōu)點(diǎn),具有很強(qiáng)的實(shí)用性。為測試該系統(tǒng)運(yùn)行正常,利用LPC2142發(fā)送一組來自麻省理工的心電數(shù)據(jù)進(jìn)行測試,為配合Android支持的USB 傳輸模式,LPC2142 USB按批量傳輸方式,一次可傳送最大包長度為64字節(jié),Android平板也采用批量傳輸方式,設(shè)置的接收時(shí)間與LPC2142 的發(fā)送時(shí)間一致,接收函數(shù)是bulkTransfer (UsbEndpoint endpoint,byte[] buffer,int length ,int timeout) 。為說明測試結(jié)果,將接收的數(shù)據(jù)以文件形式存入數(shù)據(jù)庫與原數(shù)據(jù)進(jìn)行對比正確,說明測試結(jié)果非常標(biāo)準(zhǔn),測試波形如圖7 所示。
圖7 心電信號(hào)波形圖
3 結(jié)語
本文介紹了Android平臺(tái)的系統(tǒng)構(gòu)成以及基于Android平臺(tái)平板電腦USB 應(yīng)用程序的開發(fā)和設(shè)計(jì),并將這一應(yīng)用與AMR 平臺(tái)緊密結(jié)合開發(fā)出一種新型數(shù)據(jù)采集系統(tǒng),即基于Android平臺(tái)和AMR平臺(tái)相結(jié)合的USB 數(shù)據(jù)采集系統(tǒng)??梢钥闯?,Android平板電腦在應(yīng)用程序開發(fā)上已與PC相媲美,而ARM7 處理器LPC2142 具有USB 通用串行總線接口,可以進(jìn)行高速數(shù)據(jù)采集的處理,該平臺(tái)具有良好的實(shí)用性, 可應(yīng)用于需要實(shí)時(shí)高精度測量電參數(shù)的領(lǐng)域,而且方便快捷。相信未來隨著 Android 技術(shù)的不斷發(fā)展平板電腦應(yīng)用程序會(huì)越來越豐富,應(yīng)用領(lǐng)域會(huì)越來越廣。
-
Android
+關(guān)注
關(guān)注
12文章
3940瀏覽量
127649 -
usb
+關(guān)注
關(guān)注
60文章
7966瀏覽量
265295 -
數(shù)據(jù)采集
+關(guān)注
關(guān)注
39文章
6206瀏覽量
113835
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論