摘 要: 介紹一種采用環(huán)形緩存技術(shù)的嵌入式數(shù)據(jù)接口設備。首先闡述了設備工作原理和硬件設計,著重討論了環(huán)形緩存技術(shù)的軟件實現(xiàn)方法。通過在無人機上的應用,證實該系統(tǒng)運行穩(wěn)定可靠,滿足設計要求。
關(guān)鍵詞: 環(huán)形緩存; 異步串行通信; 無人機
無人機在飛行時,地面控制站發(fā)送上行指令通過遙控信道到達機載設備,機載設備產(chǎn)生的下行數(shù)據(jù)通過遙測信道到達地面控制站。一般設計為上行指令與下行數(shù)據(jù)在某一機載設備上(如設備1)匯集,經(jīng)處理后發(fā)送到其他的設備中。但該設備同時還有其他任務需完成,當數(shù)據(jù)量過大時會對設備造成負擔,甚至影響飛行安全。為此本文設計了一個專用數(shù)據(jù)接口設備,用于無人機的數(shù)據(jù)交換。全系統(tǒng)框圖如圖1所示。
1 系統(tǒng)硬件設計
數(shù)據(jù)接口設備硬件主要由PC104嵌入式計算機組成,主要組成部分有:(1)PC104總線型CPU板,最高運行速度可達300 MHz;(2)PM504型串口擴展板;(3)32 MB DOC(閃存,Disk On Chip); (4)系統(tǒng)電源板。其中,PM504串口擴展板實現(xiàn)PC104總線的串口擴展,共擴展4個RS422總線的UART(通用異步接收/發(fā)送裝置);32 MB DOC用于存儲操作系統(tǒng)以及開發(fā)程序;系統(tǒng)電源板采用Ericsson的PKF系列電源模塊,用于提供系統(tǒng)電源,主要為5 V和12 V。
2 軟件設計
如圖1所示,數(shù)據(jù)接口設備與機載設備的數(shù)據(jù)交換分為全雙工方式與半雙工兩種方式。數(shù)據(jù)交換分為上行指令分發(fā)和下行數(shù)據(jù)融合兩部分。
2.1 上行指令分發(fā)
上行指令分發(fā)指數(shù)據(jù)接口設備接收到機載收發(fā)組合的數(shù)據(jù)后,發(fā)送到相應的設備中去。上行指令采用統(tǒng)一的幀格式,如表1所示。
其中,A為同步碼0xFF,B為幀識別符(設備1為0X11,設備2為0X22,設備3為0X33)。數(shù)據(jù)接口設備首先判斷數(shù)據(jù)是否為同步碼,如果是則存入接收數(shù)組中,接收剩余的28 B數(shù)據(jù)。然后,根據(jù)幀識別符B,發(fā)送該幀數(shù)據(jù)到相應的端口。
2.2 下行數(shù)據(jù)發(fā)送
下行數(shù)據(jù)發(fā)送指接口設備將機載設備產(chǎn)生的數(shù)據(jù)信息發(fā)送到收發(fā)組合中。每個機載設備的數(shù)據(jù)發(fā)送速率各不相同,為保證數(shù)據(jù)準確性和實時性,程序分別建立了相應的環(huán)形接收緩存。接口設備定時從環(huán)形緩存中取出數(shù)據(jù)組合后送到收發(fā)組合中。
圖4給出了發(fā)送數(shù)據(jù)流程圖。數(shù)據(jù)發(fā)送為定時模式,定時時間到后,建立發(fā)送數(shù)組并初始化,程序首先判斷接收索引IndexIn與發(fā)送索引IndexOut是否相等,如果相等,則表明環(huán)形緩存中無數(shù)據(jù),跳出發(fā)送流程,否則進入發(fā)送流程。取IndexOut指向的當前分區(qū)數(shù)據(jù)到發(fā)送數(shù)組,同時IndexOut指向下一分區(qū)。數(shù)據(jù)在接收和發(fā)送過程中,可能出現(xiàn)IndexIn與IndexOut相等的情況,因此在環(huán)形緩存中接收完一幀數(shù)據(jù)后判斷兩者是否相等,如果相等,則IndexOut自增1,使得進入發(fā)送流程中后,兩者不相等,保證了發(fā)送的進行。
當變量IndexIn和IndexOut指向緩存最后一個分區(qū)時,將兩變量重新賦初始值,分別進行下一循環(huán)的數(shù)據(jù)接收和發(fā)送。程序為接收設備1數(shù)據(jù)開辟6×32 B大小的緩存區(qū),為設備3開辟2×80 B的緩存區(qū)。每次從存有設備1數(shù)據(jù)的緩存中取兩幀數(shù)據(jù),從存有設備3數(shù)據(jù)的緩存中取一幀數(shù)據(jù),組合后發(fā)送到機載收發(fā)組合。設備1的數(shù)據(jù)發(fā)送速率為38 400 b/s,而設備3為19 200 b/s。因為數(shù)據(jù)接口設備主頻最高為300 MHz,所以不會出現(xiàn)緩存區(qū)開辟過小導致數(shù)據(jù)溢出的現(xiàn)象。
環(huán)形緩沖技術(shù)采用的線程機制實現(xiàn)了數(shù)據(jù)接收和發(fā)送的并行工作,通過對接收線程當前數(shù)據(jù)分區(qū)索引號IndexIn和發(fā)送線程當前數(shù)據(jù)處理分區(qū)索引IndexOut的有效控制,可以跟蹤并且及時處理緩存中的分區(qū)數(shù)據(jù),避免緩存區(qū)數(shù)據(jù)覆蓋和數(shù)據(jù)的漏移。
3 試驗驗證
根據(jù)上述流程框圖編寫好軟件后,下載到PC104主板上的DOC中。啟動路徑指向當前程序所在位置,設備上電后自動運行程序。試驗在兩臺PC機上進行,一臺模擬收發(fā)組合,另一臺模擬設備1、2和3。因為PC機上串口有限,采用MOXA卡進行了串口擴展。數(shù)據(jù)的發(fā)送和接收采用串口精靈軟件。試驗過程中沒有出現(xiàn)數(shù)據(jù)丟失現(xiàn)象,表明設備性能良好,可以正常工作。
本文介紹了一種采用環(huán)形緩存技術(shù)的數(shù)據(jù)接口設備。經(jīng)在無人機上驗證,該設備可以很好地完成數(shù)據(jù)接收和發(fā)送任務,避免數(shù)據(jù)丟失現(xiàn)象。產(chǎn)品可擴展性強,可以用于其他無人機系統(tǒng),具有廣泛的應用前景。
參考文獻
[1] 姚章俊,陳蜀宇,盧堯. 一種高性能環(huán)形緩沖區(qū)的研究與實現(xiàn)[J]. 計算機工程,2012,38(8):228-231.
[2] 王蕾, 潘梁, 吳國斌,等. 基于數(shù)字廣播的大數(shù)據(jù)量接收與存儲策略[J]. 計算機工程,2008,34(24):233-237.
[3] 余泓利,習勇,馬東堂. 一種基于ARM和FPGA的環(huán)形緩沖區(qū)接口設計[J]. 電子技術(shù),2011(09):53-55.
[4] 張穩(wěn)穩(wěn),歐陽嫻,白永林,等. PC104串口通信在工程中的應用[J]. 微計算機信息, 2006,22(1-2):57-59.