《電子技術(shù)應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于RTOS的飛行數(shù)據(jù)采集系統(tǒng)

基于RTOS的飛行數(shù)據(jù)采集系統(tǒng)

2008-07-10
作者:陳 杰, 蔣玉峰

??? 摘 要: 介紹一種飛行數(shù)據(jù)采集" title="數(shù)據(jù)采集">數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)。該系統(tǒng)基于LPC2138 ARM7和USOS II嵌入式實時操作系統(tǒng),具有實時、高頻率的飛行數(shù)據(jù)采集功能;提供的USB HST接口,可使用普通U盤讀取數(shù)據(jù),同時系統(tǒng)提供了仿DOS的人機接口" title="人機接口">人機接口命令,方便用戶對系統(tǒng)內(nèi)數(shù)據(jù)的管理。該系統(tǒng)為小型無人機建模提供了技術(shù)支持。
??? 關(guān)鍵詞: LPC2138? USOS II? 無人機

?

??? 近年來,無人機的發(fā)展已經(jīng)突破了軍用限制,開始向民用化發(fā)展。小型、結(jié)構(gòu)簡單、成本低的無人機市場極為廣大。
無人機氣動布局的參數(shù)通常采用風洞試驗獲得。為降低成本,在小型無人機的設(shè)計中,采用實際遙控飛行并記錄飛行參數(shù)進而推算獲得飛機氣動布局。為此,設(shè)計了基于PhilipARM7以及RTOS的數(shù)據(jù)采集系統(tǒng)" title="數(shù)據(jù)采集系統(tǒng)">數(shù)據(jù)采集系統(tǒng)。
1 系統(tǒng)總體設(shè)計
??? 根據(jù)實際設(shè)計情況,提出數(shù)據(jù)采集系統(tǒng)的主要需求為:
??? (1)采集模擬格式的高度表、航向數(shù)據(jù)、姿態(tài)數(shù)據(jù)、飛行速度等信號;
??? (2)采集脈沖模式的油門控制信號;
??? (3)采集串行數(shù)據(jù)的GPS定位信號;
??? (4)具有存儲30分鐘飛行數(shù)據(jù)的能力;
??? (5)可快速通過U盤將飛行數(shù)據(jù)導出,并立刻進行第二次記錄飛行數(shù)據(jù)的能力;
??? (6)用戶可使用PC查看數(shù)據(jù)采集系統(tǒng)內(nèi)部數(shù)據(jù)存儲" title="數(shù)據(jù)存儲">數(shù)據(jù)存儲情況;
??? (7)體積小、重量輕、便于安裝、可靠性強、抗震及抗抖動性能強、抗干擾能力較強、接口可靠。
??? 綜合考慮以上所列的設(shè)計需求,設(shè)計了如圖1所示的系統(tǒng)總體結(jié)構(gòu)。系統(tǒng)以PhilipARM7系列的LPC2138[1]為核心,完成了所要求的數(shù)種格式的飛行信號數(shù)據(jù)。考慮到數(shù)據(jù)傳輸?shù)乃俣葐栴},外擴了USB-HST控制器芯片,具備了通過插入U盤并配合按鍵快速將飛行數(shù)據(jù)讀出的功能。

???????????????????????
2 硬件設(shè)計
2.1 LPC2138簡介
??? LPC2138是基于一個支持實時仿真和嵌入式跟蹤的32/16位ARM7TDMI-STM CPU微控制器,并帶有512KB的嵌入高速Flash存儲器。128位寬度的存儲器接口和獨特的加速結(jié)構(gòu),使32位代碼能夠在最大時鐘速率下運行。其具有如下特性:
??? (1)小型LQFP64封裝的16/32位ARM7TDMI-S微控制器,32KB片內(nèi)靜態(tài)RAM。
??? (2)2個8路10位A/D轉(zhuǎn)換器,共包含16個模擬輸入,每個通道的轉(zhuǎn)換時間低至2.44μs。
??? (3)2個32位定時器/計數(shù)器(帶4路捕獲和4路比較通道)、PWM單元(6路輸出)和看門狗。
??? (4)實時時鐘具有獨立的電源和時鐘源,在節(jié)電模式下極大地降低了功耗。
??? (5)多個串行接口,包括2個16C550工業(yè)標準UART、2個高速I2C接口(400 kbps)、SPITM和SSP(具有緩沖功能,數(shù)據(jù)長度可變)。
??? (6)多達47個5V的通用I/O口(LQFP64封裝)。
??? (7)9個邊沿或電平觸發(fā)的外部中斷引腳。
??? (8)通過片內(nèi)PLL可實現(xiàn)最大為60MHz的 CPU操作頻率,PLL的穩(wěn)定時間為100μs。
2.2 數(shù)據(jù)存儲擴展
??? 大容量數(shù)據(jù)存儲是單片機應用系統(tǒng)的瓶頸,受到容量、功耗、尋址方式的約束。突破容量限制,可以在很大程度上擴展和提高應用系統(tǒng)的總體功能。Sumsung公司的NAND結(jié)構(gòu)Flash存儲器件是一款性價比很高的超大容量數(shù)據(jù)存儲器件,在MP3、U盤、數(shù)碼相機和PDA中有廣泛應用,且市場占有份額逐年加大。將該器件作為各種單片機尤其是嵌入式系統(tǒng)的數(shù)據(jù)存儲器,可以完美地解決容量限制,實現(xiàn)靈活操作,勢必成為數(shù)據(jù)存儲的主流方向。
??? 按照50Hz的采樣速率,每秒有800×8bit的數(shù)據(jù)量,系統(tǒng)要求至少存儲30分鐘的飛行數(shù)據(jù)。使用K9F2808擴展16M×8bit的外部存儲空間,用來存儲從發(fā)動機控制器中傳來的發(fā)動機數(shù)據(jù),經(jīng)過計算其至少可以存儲500分鐘的數(shù)據(jù),能夠滿足無人機飛行數(shù)據(jù)的要求。
??? K9F2808電源電壓1.7~3.6V,體積小,功耗低,容量最大可達1GB,按頁進行讀寫,按塊擦除,通過I/O口分時復用作為命令/地址/數(shù)據(jù)。為防止啟動或復位時電壓不穩(wěn)的誤擦除操作,K9F2808的WP接了10kΩ的上拉電阻,同時與地之間連接濾波電容。其余控制引腳直接與ARM的普通I/O口相連。
2.3 擴展USB Host
??? USB技術(shù)規(guī)范將使用USB進行數(shù)據(jù)傳輸?shù)碾p方劃分為Host和Slave,并且規(guī)定,數(shù)據(jù)傳輸只能發(fā)生在Host和Slave之間。目前,絕大多數(shù)Host功能角色被集成在各種類型的PC機上,如筆記本電腦、臺式機、Mac機及服務器等;而各種各樣的基本USB移動設(shè)備都集成了USB Slave功能角色,例如U盤、帶USB接口的數(shù)碼相機等。這樣,就導致這些作為USB Slave的USB接口的數(shù)字設(shè)備中的數(shù)據(jù)離開PC機將無法讀寫。解決這一問題的根本辦法就是在需要使用USB設(shè)備的系統(tǒng)中集成USB Host功能模塊,使之具有與USB Slave設(shè)備進行數(shù)據(jù)傳輸?shù)哪芰Α?BR>??? 本設(shè)計利用SL811HS和8位單片機實現(xiàn)的系統(tǒng)完成了USB Host功能,并且提供了USB總線的接口方式。將其作為一個數(shù)據(jù)接口模塊集成到嵌入式系統(tǒng)中,使得用戶系統(tǒng)能夠讀/寫作為Slave的USB移動存儲器,從而完成數(shù)據(jù)存儲和交換功能,其硬件原理如圖2所示。

??????????????????
??? SL811HST的主從選擇M/S接低電平,用來選擇USB的主模式;其中斷輸出INT_U經(jīng)下拉接ARM的外部中斷。SL811HST外接12MHz的有源晶振,同時將CM接高電平激活內(nèi)部的時鐘4倍頻,既可以使芯片內(nèi)部時鐘頻率達到48MΩ,又可以降低外部線路頻率,提高電路的抗干擾能力。
2.4 復位電路
??? ARM系統(tǒng)需要兩個復位源,其中一個RST是系統(tǒng)復位源,TRST是JTAG接口的調(diào)試復位源。如果兩個復位源都使用MAX811的輸出,則可能驅(qū)動能力不夠。因此使用一片高速CMOS三態(tài)緩沖器74HC125,以增強輸出能力,其原理如圖3所示。

??????????????????????
3 軟件設(shè)計
??? 為確保程序的可靠及編程的簡便,本方案中采用了嵌入式操作系統(tǒng)USOS II[2]。USOS II是針對中低檔單片機而設(shè)計的嵌入式實時操作系統(tǒng)內(nèi)核,同時支持按時間片輪轉(zhuǎn)、按優(yōu)先級搶占、二者結(jié)合共三種調(diào)度策略。其具有完善的任務管理功能,提供定時、延時服務,支持消息、信號(signal)通訊機制,支持臨界代碼段保護,提供二進制、計數(shù)型信號量(semaphore)同步對象等,支持Bottom-half中斷管理機制[3]。
??? 本設(shè)計創(chuàng)建了人機接口、數(shù)據(jù)采集二個任務。人機接口主要完成通過串口" title="串口">串口與計算機相連接時對存儲在Nand Flash中的數(shù)據(jù)的整理、備份、刪除等功能,數(shù)據(jù)存儲任務負責將各次采樣獲得的數(shù)據(jù)打包后存儲進入Nand Flash。AD采樣中斷完成對高度、速度、航向、姿態(tài)、舵機位置的數(shù)據(jù)采集;比較器中斷完成對油門控制信號的數(shù)據(jù)采集;Uart中斷完成對GPS定位信號的數(shù)據(jù)采集。其軟件結(jié)構(gòu)如圖4所示。

????????????????????????
3.1 主程序設(shè)計
??? 主程序主要完成硬件的初始化、操作系統(tǒng)的初始化以及文件系統(tǒng)的初始化。由于USOS II已經(jīng)提供了比較完善的文件系統(tǒng)管理,因此可采用類似于PC機DOS系統(tǒng)對文件的管理模式。本設(shè)計中,將Nand Flash存儲設(shè)定為C盤,而將臨時插入用來讀取當次飛行數(shù)據(jù)的U盤設(shè)定為D盤。在Flash初始化成功后,將以Flash為存儲媒介的C盤添加到文件系統(tǒng),并創(chuàng)建數(shù)據(jù)存儲和人機接口任務。如果Flash未初始化成功,則系統(tǒng)報錯,并只創(chuàng)建人機接口任務,使用者可以通過PC機對系統(tǒng)進行狀態(tài)查詢。主程序的軟件流程如圖5(a)所示。

???????????????????????????
3.2 數(shù)據(jù)采集任務設(shè)計
??? 數(shù)據(jù)采集任務主要用來將AD中斷、Uart中斷、比較器中斷采集到的各種飛行數(shù)據(jù)計算、打包。為提高寫Nand Flash的效率,在內(nèi)存中開辟了兩個與Flash頁面大小相同、長度為512bit的緩沖區(qū),打包完畢的數(shù)據(jù)先存入其中一個緩沖區(qū)內(nèi)。當緩沖區(qū)存滿后,將緩沖區(qū)滿標志置位,并向人機接口任務發(fā)送消息;人機接口任務接收到緩沖區(qū)滿的消息后,會將對應的緩沖區(qū)中的數(shù)據(jù)寫入Flash,并將緩沖區(qū)滿的標志清空。
??? 人機接口任務在向Flash中寫數(shù)據(jù)的同時,數(shù)據(jù)采集任務仍實時采集飛行數(shù)據(jù),并將采集到的數(shù)據(jù)存入另外一個緩沖區(qū),由于采用了操作系統(tǒng)的雙任務設(shè)計,保證了采集到的數(shù)據(jù)不會丟失,并提高了采樣頻率。數(shù)據(jù)采集任務流程如圖5(b)所示。
3.3 人機接口任務設(shè)計
??? 人機接口任務主要用來管理U盤的插拔以及響應用戶輸入的類DOS命令。如判斷出U盤插入,并枚舉成功,則在文件系統(tǒng)中添加D盤;如判斷出U盤被拔出,則在文件系統(tǒng)中刪除D盤。人機接口任務流程如圖5(c)所示。
3.4 Nand Flash驅(qū)動程序設(shè)計
??? 系統(tǒng)的數(shù)據(jù)存儲期間選用K9F2808,其存儲結(jié)構(gòu)示意圖如圖6所示。該器件由1K個塊(block)組成,每個塊有32頁,每頁有528B,這528B分成A、B、C三個區(qū)。對每一頁的尋址需要通過I/O口送出三個地址,第二、三行地址(A9~A23)指明尋址到某一頁,第一列地址指明尋址到頁的指定區(qū)中某一字節(jié)。對頁的分區(qū)命令如表1所列。

??????????????????????????
??? 由表1可以看出,00H、01H、50H只是選區(qū)指針。選定區(qū)的內(nèi)部尋址是由第一個列地址完成的,A0~A7可以最大尋址256B。

????????????????????????????
??? Flash的驅(qū)動程序按照結(jié)構(gòu)化層次設(shè)計方法設(shè)計。將Flash的總線數(shù)據(jù)讀寫、對控制總線的操作及延時操作封裝成底層函數(shù),中層函數(shù)由對Flash讀、寫、擦除、查空等函數(shù)組成,頂層函數(shù)由USOS II中的文件系統(tǒng)組成,其示意圖如圖7所示。

???????????????????????????

?????????????????????????????
3.5 USB HOST驅(qū)動程序設(shè)計
??? 本設(shè)計主要使用USOS II操作系統(tǒng)中可選配的USB HST驅(qū)動軟件包,只要將控制SL811HS的I/O口在軟件包的底層進行相應定義[4],則對U盤的操作即可實現(xiàn)對用戶透明。用戶只需調(diào)用軟件包中的頂層fWrite( )和fRead( )等函數(shù),即可實現(xiàn)USB主口對存儲介質(zhì)的數(shù)據(jù)讀寫操作。
??? 與Nand Flash相似,SL811HST的驅(qū)動程序設(shè)計也遵循了結(jié)構(gòu)化層次設(shè)計,底層是對SL811HST數(shù)據(jù)及控制線的操作,中層是對SL811HST的讀、寫以及緩沖區(qū)讀、寫等函數(shù),頂層為文件系統(tǒng)。
3.6 串口驅(qū)動程序設(shè)計
??? 設(shè)計中采用LPC2138中的兩個標準Uart口,其中一個串口用來接收發(fā)動機控制器傳送的發(fā)動機參數(shù),另外一個串口用來與通用PC連接,進行人機交互。
??? 串口接收、發(fā)送數(shù)據(jù)都采用中斷方式。為了方便程序使用,為每個串口都劃分了專門的接收、發(fā)送緩沖區(qū)。當需要發(fā)送數(shù)據(jù)時,將待發(fā)送數(shù)據(jù)存儲在對應串口的發(fā)送緩沖區(qū)中,并置位串口發(fā)送中斷標志位,啟動發(fā)送過程。接收數(shù)據(jù)時,中斷程序自動將接收來的數(shù)據(jù)存放在對應的串口接收緩沖區(qū)內(nèi),用戶可以通過查詢接收緩沖區(qū)的頭尾指針來判斷該串口是否接收到數(shù)據(jù)。
??? 為方便程序調(diào)用,仿照C語言中屏幕顯示函數(shù),構(gòu)造了Putch()、Puts()、Getch()、Gets()等函數(shù),通過串口接收、發(fā)送數(shù)據(jù)。
4 系統(tǒng)聯(lián)調(diào)?
??? 實際使用中,每次飛行結(jié)束后,直接使用普通U盤插入數(shù)據(jù)采集系統(tǒng),按下組合鍵后,可自動將上次記錄的飛行數(shù)據(jù)傳送到U盤中。待數(shù)次飛行以后,可將數(shù)據(jù)采集系統(tǒng)通過串口與PC機相連接,使用串口調(diào)試助手與采集系統(tǒng)中的仿DOS的指令軟件Shell進行通訊。對數(shù)據(jù)采集系統(tǒng)進行人機交互的界面如圖8所示[5]。

??????????????????????
??? 上面的操作步驟為:查閱C盤(片上Flash)內(nèi)容→刪除C上一個文件→插入U盤→顯示U盤目錄→將C盤上數(shù)據(jù)記錄文件拷貝到D盤→顯示D盤文件,文件已經(jīng)拷貝成功。
??? 通過測試可以看出,數(shù)據(jù)采集系統(tǒng)具有良好的用戶界面,可以通過防DOS命令進行數(shù)據(jù)讀取。
??? 目前該飛行系統(tǒng)已經(jīng)安裝到試驗的小型無人機上進行多次試飛。經(jīng)過檢測,該系統(tǒng)運行穩(wěn)定、可靠,采集數(shù)據(jù)沒有錯誤現(xiàn)象,使用U盤讀取數(shù)據(jù),以及使用PC機進行交互時方便快捷。系統(tǒng)為小型無人機的建模提供了極大的技術(shù)支持。
參考文獻
[1] Philips Semiconductors Preliminary User Manual.LPC2131/2132/2138 User Manual[EB/OL],Rev.1.4,2004,4.
[2] 嵌入式軟件網(wǎng).USOS II嵌入式操作系統(tǒng)使用手冊[EB/OL].http://www.mcu-soft.com,2006,6.
[3] 鄭玉全.微型搶占式實時操作系統(tǒng)的設(shè)計與實現(xiàn).單片機與嵌入式系統(tǒng),2004,(1).
[4] Silicon Laboratories.Usb firmware programmer′s Guide[EB/OL],Rev1.3,2003,12.
[5] 鄭玉全,陳杰,沈為群,等.基于RTOS的渦噴發(fā)動機數(shù)字控制系統(tǒng)[J].電子技術(shù)應用,2005,31(06):34-37.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。