《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(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的人機(jī)接口" title="人機(jī)接口">人機(jī)接口命令,,方便用戶對系統(tǒng)內(nèi)數(shù)據(jù)的管理,。該系統(tǒng)為小型無人機(jī)建模提供了技術(shù)支持,。
??? 關(guān)鍵詞: LPC2138? USOS II? 無人機(jī)

?

??? 近年來,無人機(jī)的發(fā)展已經(jīng)突破了軍用限制,,開始向民用化發(fā)展,。小型、結(jié)構(gòu)簡單,、成本低的無人機(jī)市場極為廣大,。
無人機(jī)氣動布局的參數(shù)通常采用風(fēng)洞試驗獲得。為降低成本,,在小型無人機(jī)的設(shè)計中,,采用實際遙控飛行并記錄飛行參數(shù)進(jìn)而推算獲得飛機(jī)氣動布局。為此,,設(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ù)導(dǎo)出,,并立刻進(jìn)行第二次記錄飛行數(shù)據(jù)的能力;
??? (6)用戶可使用PC查看數(shù)據(jù)采集系統(tǒng)內(nèi)部數(shù)據(jù)存儲" title="數(shù)據(jù)存儲">數(shù)據(jù)存儲情況,;
??? (7)體積小,、重量輕、便于安裝,、可靠性強(qiáng),、抗震及抗抖動性能強(qiáng)、抗干擾能力較強(qiáng),、接口可靠,。
??? 綜合考慮以上所列的設(shè)計需求,設(shè)計了如圖1所示的系統(tǒng)總體結(jié)構(gòu),。系統(tǒng)以PhilipARM7系列的LPC2138[1]為核心,,完成了所要求的數(shù)種格式的飛行信號數(shù)據(jù),。考慮到數(shù)據(jù)傳輸?shù)乃俣葐栴},,外擴(kuò)了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è)標(biāo)準(zhǔn)UART,、2個高速I2C接口(400 kbps),、SPITM和SSP(具有緩沖功能,數(shù)據(jù)長度可變),。
??? (6)多達(dá)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ù)存儲擴(kuò)展
??? 大容量數(shù)據(jù)存儲是單片機(jī)應(yīng)用系統(tǒng)的瓶頸,受到容量,、功耗,、尋址方式的約束。突破容量限制,,可以在很大程度上擴(kuò)展和提高應(yīng)用系統(tǒng)的總體功能,。Sumsung公司的NAND結(jié)構(gòu)Flash存儲器件是一款性價比很高的超大容量數(shù)據(jù)存儲器件,在MP3,、U盤,、數(shù)碼相機(jī)和PDA中有廣泛應(yīng)用,且市場占有份額逐年加大,。將該器件作為各種單片機(jī)尤其是嵌入式系統(tǒng)的數(shù)據(jù)存儲器,,可以完美地解決容量限制,實現(xiàn)靈活操作,勢必成為數(shù)據(jù)存儲的主流方向,。
??? 按照50Hz的采樣速率,,每秒有800×8bit的數(shù)據(jù)量,系統(tǒng)要求至少存儲30分鐘的飛行數(shù)據(jù),。使用K9F2808擴(kuò)展16M×8bit的外部存儲空間,,用來存儲從發(fā)動機(jī)控制器中傳來的發(fā)動機(jī)數(shù)據(jù),經(jīng)過計算其至少可以存儲500分鐘的數(shù)據(jù),,能夠滿足無人機(jī)飛行數(shù)據(jù)的要求,。
??? K9F2808電源電壓1.7~3.6V,體積小,,功耗低,,容量最大可達(dá)1GB,按頁進(jìn)行讀寫,,按塊擦除,,通過I/O口分時復(fù)用作為命令/地址/數(shù)據(jù)。為防止啟動或復(fù)位時電壓不穩(wěn)的誤擦除操作,,K9F2808的WP接了10kΩ的上拉電阻,,同時與地之間連接濾波電容。其余控制引腳直接與ARM的普通I/O口相連,。
2.3 擴(kuò)展USB Host
??? USB技術(shù)規(guī)范將使用USB進(jìn)行數(shù)據(jù)傳輸?shù)碾p方劃分為Host和Slave,,并且規(guī)定,數(shù)據(jù)傳輸只能發(fā)生在Host和Slave之間,。目前,,絕大多數(shù)Host功能角色被集成在各種類型的PC機(jī)上,如筆記本電腦,、臺式機(jī),、Mac機(jī)及服務(wù)器等;而各種各樣的基本USB移動設(shè)備都集成了USB Slave功能角色,,例如U盤,、帶USB接口的數(shù)碼相機(jī)等。這樣,,就導(dǎo)致這些作為USB Slave的USB接口的數(shù)字設(shè)備中的數(shù)據(jù)離開PC機(jī)將無法讀寫,。解決這一問題的根本辦法就是在需要使用USB設(shè)備的系統(tǒng)中集成USB Host功能模塊,使之具有與USB Slave設(shè)備進(jìn)行數(shù)據(jù)傳輸?shù)哪芰Α?BR>??? 本設(shè)計利用SL811HS和8位單片機(jī)實現(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)部時鐘頻率達(dá)到48MΩ,,又可以降低外部線路頻率,提高電路的抗干擾能力,。
2.4 復(fù)位電路
??? ARM系統(tǒng)需要兩個復(fù)位源,,其中一個RST是系統(tǒng)復(fù)位源,TRST是JTAG接口的調(diào)試復(fù)位源,。如果兩個復(fù)位源都使用MAX811的輸出,,則可能驅(qū)動能力不夠。因此使用一片高速CMOS三態(tài)緩沖器74HC125,,以增強(qiáng)輸出能力,,其原理如圖3所示。

??????????????????????
3 軟件設(shè)計
??? 為確保程序的可靠及編程的簡便,,本方案中采用了嵌入式操作系統(tǒng)USOS II[2],。USOS II是針對中低檔單片機(jī)而設(shè)計的嵌入式實時操作系統(tǒng)內(nèi)核,同時支持按時間片輪轉(zhuǎn),、按優(yōu)先級搶占,、二者結(jié)合共三種調(diào)度策略。其具有完善的任務(wù)管理功能,,提供定時,、延時服務(wù),,支持消息,、信號(signal)通訊機(jī)制,支持臨界代碼段保護(hù),,提供二進(jìn)制,、計數(shù)型信號量(semaphore)同步對象等,支持Bottom-half中斷管理機(jī)制[3],。
??? 本設(shè)計創(chuàng)建了人機(jī)接口,、數(shù)據(jù)采集二個任務(wù)。人機(jī)接口主要完成通過串口" title="串口">串口與計算機(jī)相連接時對存儲在Nand Flash中的數(shù)據(jù)的整理,、備份,、刪除等功能,數(shù)據(jù)存儲任務(wù)負(fù)責(zé)將各次采樣獲得的數(shù)據(jù)打包后存儲進(jìn)入Nand Flash,。AD采樣中斷完成對高度,、速度,、航向、姿態(tài),、舵機(jī)位置的數(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機(jī)DOS系統(tǒng)對文件的管理模式。本設(shè)計中,,將Nand Flash存儲設(shè)定為C盤,,而將臨時插入用來讀取當(dāng)次飛行數(shù)據(jù)的U盤設(shè)定為D盤。在Flash初始化成功后,,將以Flash為存儲媒介的C盤添加到文件系統(tǒng),,并創(chuàng)建數(shù)據(jù)存儲和人機(jī)接口任務(wù)。如果Flash未初始化成功,,則系統(tǒng)報錯,,并只創(chuàng)建人機(jī)接口任務(wù),使用者可以通過PC機(jī)對系統(tǒng)進(jìn)行狀態(tài)查詢,。主程序的軟件流程如圖5(a)所示,。

???????????????????????????
3.2 數(shù)據(jù)采集任務(wù)設(shè)計
??? 數(shù)據(jù)采集任務(wù)主要用來將AD中斷、Uart中斷,、比較器中斷采集到的各種飛行數(shù)據(jù)計算,、打包。為提高寫Nand Flash的效率,,在內(nèi)存中開辟了兩個與Flash頁面大小相同,、長度為512bit的緩沖區(qū),打包完畢的數(shù)據(jù)先存入其中一個緩沖區(qū)內(nèi),。當(dāng)緩沖區(qū)存滿后,,將緩沖區(qū)滿標(biāo)志置位,并向人機(jī)接口任務(wù)發(fā)送消息,;人機(jī)接口任務(wù)接收到緩沖區(qū)滿的消息后,,會將對應(yīng)的緩沖區(qū)中的數(shù)據(jù)寫入Flash,并將緩沖區(qū)滿的標(biāo)志清空,。
??? 人機(jī)接口任務(wù)在向Flash中寫數(shù)據(jù)的同時,,數(shù)據(jù)采集任務(wù)仍實時采集飛行數(shù)據(jù),并將采集到的數(shù)據(jù)存入另外一個緩沖區(qū),,由于采用了操作系統(tǒng)的雙任務(wù)設(shè)計,,保證了采集到的數(shù)據(jù)不會丟失,,并提高了采樣頻率。數(shù)據(jù)采集任務(wù)流程如圖5(b)所示,。
3.3 人機(jī)接口任務(wù)設(shè)計
??? 人機(jī)接口任務(wù)主要用來管理U盤的插拔以及響應(yīng)用戶輸入的類DOS命令,。如判斷出U盤插入,并枚舉成功,,則在文件系統(tǒng)中添加D盤,;如判斷出U盤被拔出,則在文件系統(tǒng)中刪除D盤,。人機(jī)接口任務(wù)流程如圖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口在軟件包的底層進(jìn)行相應(yīng)定義[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中的兩個標(biāo)準(zhǔn)Uart口,,其中一個串口用來接收發(fā)動機(jī)控制器傳送的發(fā)動機(jī)參數(shù),,另外一個串口用來與通用PC連接,進(jìn)行人機(jī)交互,。
??? 串口接收,、發(fā)送數(shù)據(jù)都采用中斷方式。為了方便程序使用,,為每個串口都劃分了專門的接收,、發(fā)送緩沖區(qū)。當(dāng)需要發(fā)送數(shù)據(jù)時,,將待發(fā)送數(shù)據(jù)存儲在對應(yīng)串口的發(fā)送緩沖區(qū)中,,并置位串口發(fā)送中斷標(biāo)志位,啟動發(fā)送過程,。接收數(shù)據(jù)時,,中斷程序自動將接收來的數(shù)據(jù)存放在對應(yīng)的串口接收緩沖區(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機(jī)相連接,使用串口調(diào)試助手與采集系統(tǒng)中的仿DOS的指令軟件Shell進(jìn)行通訊,。對數(shù)據(jù)采集系統(tǒng)進(jìn)行人機(jī)交互的界面如圖8所示[5],。

??????????????????????
??? 上面的操作步驟為:查閱C盤(片上Flash)內(nèi)容→刪除C上一個文件→插入U盤→顯示U盤目錄→將C盤上數(shù)據(jù)記錄文件拷貝到D盤→顯示D盤文件,文件已經(jīng)拷貝成功,。
??? 通過測試可以看出,,數(shù)據(jù)采集系統(tǒng)具有良好的用戶界面,可以通過防DOS命令進(jìn)行數(shù)據(jù)讀取,。
??? 目前該飛行系統(tǒng)已經(jīng)安裝到試驗的小型無人機(jī)上進(jìn)行多次試飛,。經(jīng)過檢測,該系統(tǒng)運行穩(wěn)定,、可靠,,采集數(shù)據(jù)沒有錯誤現(xiàn)象,使用U盤讀取數(shù)據(jù),,以及使用PC機(jī)進(jìn)行交互時方便快捷,。系統(tǒng)為小型無人機(jī)的建模提供了極大的技術(shù)支持。
參考文獻(xiàn)
[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).單片機(jī)與嵌入式系統(tǒng),2004,,(1).
[4] Silicon Laboratories.Usb firmware programmer′s Guide[EB/OL],,Rev1.3,2003,,12.
[5] 鄭玉全,,陳杰,沈為群,,等.基于RTOS的渦噴發(fā)動機(jī)數(shù)字控制系統(tǒng)[J].電子技術(shù)應(yīng)用,,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)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。