<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于 Android 平臺(tái)的 USB 數(shù)據(jù)采集系統(tǒng)

          基于 Android 平臺(tái)的 USB 數(shù)據(jù)采集系統(tǒng)

          作者: 時(shí)間:2013-08-06 來(lái)源:網(wǎng)絡(luò) 收藏

          UsbAccessory 本類是針對(duì)Open Accessory API設(shè)計(jì)的。UsbConstants作為 常量定義,在Linux內(nèi)核文件linux/usb/ch9 . h中。UsbDevice獲取設(shè)備的信息,比如說(shuō)類型、制造商等等。

            UsbDeviceConnection 這個(gè)是 設(shè)備傳輸控制的核心。UsbEndpoint 獲取一個(gè)USB 終端信息。UsbInt erface USB 底層接口,獲取一些信息底層信息,比如說(shuō)通訊協(xié)議,等等。UsbManager USB管理類,它提供了識(shí)別和使用的USB 設(shè)備和USB 配件通訊方法。應(yīng)用程序可以獲取一個(gè)UsbManager實(shí)例,然后用于連接的設(shè)備或配件清單查詢,管理、通信。UsbRequest 核心的USB請(qǐng)求處理類,支持讀寫操作,以字節(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)使用視圖來(lái)形成顯示信息和響應(yīng)用戶動(dòng)作的圖形界面。Broadcast Receiver(廣播接收器) 通過(guò)創(chuàng)建和注冊(cè)廣播接收器,應(yīng)用程序可以監(jiān)聽到那些匹配特定的過(guò)濾標(biāo)準(zhǔn)的廣播。Intent( 意圖) 應(yīng)用程序間傳遞消息的框架。View 是Android中圖形用戶界面的基類,提供可視化界面的展示。

            1 . 4 Android 應(yīng)用程序設(shè)計(jì)

            Android應(yīng)用程序開發(fā)是由Java語(yǔ)言實(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來(lái)實(shí)現(xiàn)人機(jī)交互界面,使用戶操作起來(lái)方便快捷。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 ,該程序還注冊(cè)了BroadcastReceiver( 廣播消息) 來(lái)接收系統(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ù)用為輸入腳測(cè)量范圍: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 通信命令

          模數(shù)轉(zhuǎn)換器相關(guān)文章:模數(shù)轉(zhuǎn)換器工作原理


          分頻器相關(guān)文章:分頻器原理


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();