余暉冬 陳 鑫 王書(shū)磊
(1.中國(guó)人民解放軍92145部隊(duì),上海 200080 2.海軍工程大學(xué)導(dǎo)航工程教研室,湖北 武漢 430033)
捷聯(lián)式慣性導(dǎo)航系統(tǒng)(Strapdown Inertial Navigation System,SINS)將慣性器件直接固連在運(yùn)載體上,慣性器件可以感應(yīng)出運(yùn)載體的加速度和姿態(tài)等信息,而且不受任何外部因素的影響,可以實(shí)現(xiàn)真正意義上的自主式導(dǎo)航[1-3]。捷聯(lián)慣導(dǎo)系統(tǒng)具有成本較低、體積更小、可靠性更高等優(yōu)點(diǎn),因此已成為慣性導(dǎo)航技術(shù)的重要發(fā)展方向之一。相對(duì)于傳統(tǒng)平臺(tái)式慣性導(dǎo)航系統(tǒng),捷聯(lián)慣導(dǎo)數(shù)字化程度更高,因此數(shù)字信號(hào)的傳輸與通信是導(dǎo)航實(shí)現(xiàn)的前提和基礎(chǔ)。目前,捷聯(lián)慣導(dǎo)與上位機(jī)或?qū)Ш浇馑阌?jì)算機(jī)的通信主要采用串行通信。通信數(shù)據(jù)主要包含陀螺儀輸出的角速度數(shù)據(jù)和加速度計(jì)輸出的加速度數(shù)據(jù)等,用于后續(xù)導(dǎo)航解算和數(shù)據(jù)處理分析。為保證導(dǎo)航解算對(duì)于慣性器件數(shù)據(jù)更新率的要求,慣導(dǎo)串行通信通常具有數(shù)據(jù)量大、波特率高、更新率高等特點(diǎn)。在通用計(jì)算機(jī)上實(shí)現(xiàn)慣導(dǎo)高速串行通信相對(duì)簡(jiǎn)單,文獻(xiàn)[4][5]介紹了在VC++開(kāi)發(fā)平臺(tái)下,基于MSComm進(jìn)行串口編程的方法。文獻(xiàn)[6][7]闡述了在VC++開(kāi)發(fā)平臺(tái)下基于MOXA多串口卡的多串口實(shí)時(shí)通信的實(shí)現(xiàn)方法。但是在嵌入式計(jì)算機(jī)上,由于要兼顧成本和性能,需要對(duì)系統(tǒng)資源進(jìn)行優(yōu)化配置,對(duì)程序進(jìn)行合理設(shè)計(jì)。本文基于低成本的DSP 28335硬件架構(gòu),設(shè)計(jì)了捷聯(lián)慣導(dǎo)高速串行通信模塊,以較低的硬件成本,構(gòu)建了慣性導(dǎo)航實(shí)現(xiàn)平臺(tái)。
DSP(Digital Signal Processer)即數(shù)字信號(hào)處理器,是美國(guó)德州儀器公司(Texas Instruments,簡(jiǎn)稱TI)研發(fā)生產(chǎn)的專用于數(shù)字信號(hào)處理的芯片,其強(qiáng)大的浮點(diǎn)型計(jì)算能力是目前市面上其他CPU無(wú)法比擬的,集成有專用數(shù)學(xué)計(jì)算指令集以及對(duì)內(nèi)存優(yōu)化能力使這款專用CPU 在數(shù)字信號(hào)處理領(lǐng)域表現(xiàn)優(yōu)異。
由于是專用CPU,因此DSP 只能用TI 公司專用的軟件開(kāi)發(fā)工具設(shè)計(jì)軟件,TI 公司將這款軟件命名為CCS(Code Composer Studio,CCS 集成代碼開(kāi)發(fā)環(huán)境)。DSP 系統(tǒng)軟件開(kāi)發(fā)工具CCS編輯、編譯、連接、軟件仿真以及硬件調(diào)試等功能于一體,操作簡(jiǎn)單,擁有良好的人機(jī)交互界面,并支持C語(yǔ)言標(biāo)準(zhǔn),編程簡(jiǎn)單易于開(kāi)發(fā)[8]。它不僅提供了配置、建立、調(diào)試、跟蹤和分析程序的工具,而且便于實(shí)時(shí)、嵌入式信號(hào)處理程序的編制和測(cè)試,能夠加速程序開(kāi)發(fā)進(jìn)程,提高設(shè)計(jì)工作效率。
慣性導(dǎo)航設(shè)備陀螺儀和加速度計(jì)數(shù)據(jù)采用IEEE標(biāo)準(zhǔn)浮點(diǎn)型數(shù)據(jù)格式輸出,每個(gè)浮點(diǎn)型數(shù)占4個(gè)字節(jié)外加協(xié)議頭和協(xié)議尾以及自定義信息共62字節(jié)。由于慣性導(dǎo)航解算要求陀螺儀和加速度計(jì)數(shù)據(jù)更新率不低于100Hz,為保證信息的有效傳輸以及為后續(xù)導(dǎo)航解算預(yù)留硬件資源,設(shè)定通信波特率為1843200bit/s。
串口接收數(shù)據(jù)以及發(fā)送數(shù)據(jù)都設(shè)置為中斷模式,利用中斷模式接收數(shù)據(jù)可以有效節(jié)省CPU資源,避免主程序?qū)崟r(shí)查詢帶來(lái)不必要的浪費(fèi),當(dāng)串口完整接收一個(gè)字節(jié)時(shí)將數(shù)據(jù)存儲(chǔ)在預(yù)先定義的串口接收緩存區(qū)中,緩存區(qū)至少能緩存3條最大協(xié)議內(nèi)容的長(zhǎng)度。這種設(shè)計(jì)方式能夠保證即使主程序不能及時(shí)處理串口數(shù)據(jù)也不會(huì)造成數(shù)據(jù)丟失的問(wèn)題。
主程序遍歷串口接收數(shù)據(jù)緩存區(qū),如果協(xié)議緩存區(qū)字節(jié)數(shù)超過(guò)最大協(xié)議長(zhǎng)度字節(jié)數(shù)62字節(jié)依然沒(méi)有收到協(xié)議頭或者協(xié)議尾,或者校驗(yàn)失敗則丟棄這條協(xié)議,清除協(xié)議解析緩沖區(qū)。這種串口接收數(shù)據(jù)處理方式稱之為雙緩存區(qū)模式。這種處理方式可以很輕松處理高速數(shù)據(jù)通信問(wèn)題而且不容易丟失數(shù)據(jù)。串口數(shù)據(jù)接收協(xié)議解析流程如圖1所示。
圖1 串口數(shù)據(jù)接收處理流程圖
串口接收數(shù)據(jù)中斷函數(shù)流程如圖2所示。
圖2 串口接收中斷函數(shù)流程圖
串口發(fā)送函數(shù)流程處理如圖3所示。
圖3 串口發(fā)送函數(shù)流程圖
串口發(fā)送中斷函數(shù)處理過(guò)程如圖4所示。
圖4 串口發(fā)送中斷函數(shù)流程圖
DSP 28335芯片初始化階段,主要對(duì)系統(tǒng)時(shí)鐘頻率、串行通信SCI模塊、芯片引腳、中斷向量等進(jìn)行初始化設(shè)置,其主要代碼及其功能如下:
串口接收中斷服務(wù)程序主要將輸入緩沖區(qū)的數(shù)據(jù)讀入到存儲(chǔ)器中,同時(shí)將數(shù)據(jù)按照協(xié)議進(jìn)行解析,將其轉(zhuǎn)換成計(jì)算機(jī)能處理的數(shù)據(jù)形式,便于后續(xù)進(jìn)行慣性導(dǎo)航解算,其主要代碼及功能如下:
捷聯(lián)慣性導(dǎo)航系統(tǒng)在軍、民用領(lǐng)域都有重要應(yīng)用,而嵌入式慣性導(dǎo)航解算計(jì)算機(jī)是捷聯(lián)慣導(dǎo)的重要組成部分。陀螺儀和加速度計(jì)等慣性器件與嵌入式計(jì)算機(jī)的通信是實(shí)現(xiàn)慣性導(dǎo)航的前提和基礎(chǔ)。為了兼顧慣性導(dǎo)航串行通信的高更新率、高波特率、大數(shù)據(jù)量等特性,以及嵌入式計(jì)算機(jī)成本等需求,本文基于DSP 28335硬件架構(gòu)設(shè)計(jì)了捷聯(lián)慣導(dǎo)通信模塊,從而實(shí)現(xiàn)了捷聯(lián)慣導(dǎo)高速、穩(wěn)定、可靠的數(shù)據(jù)通信。