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