羅徳杰,王曉航
(航空工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)
ARINC429總線是美國(guó)航空無(wú)線電公司制定的民用航空數(shù)字總線傳輸標(biāo)準(zhǔn),它規(guī)定了使用該總線的航空電子設(shè)備的信息流向和基本數(shù)據(jù)字的格式。ARINC429的一個(gè)數(shù)據(jù)位具有32位,如表1中所示。其1-8位為標(biāo)識(shí)位(Label)。數(shù)據(jù)通過(guò)標(biāo)識(shí)識(shí)別,最多具備255標(biāo)識(shí)號(hào)。9-10位為源終端識(shí)別(SDI);11-28(或29)位是數(shù)據(jù)位;29(或30)到31位為符號(hào)狀態(tài)矩陣位(SSM),此位的作用是它指出數(shù)據(jù)的特性或狀態(tài);32位為奇偶校驗(yàn)位(P),它用于檢查發(fā)送的數(shù)據(jù)是否有效。ARINC429總線數(shù)據(jù)傳輸標(biāo)準(zhǔn)自被提出來(lái)起,因其結(jié)構(gòu)簡(jiǎn)單、性能穩(wěn)定、抗干擾性強(qiáng)等優(yōu)點(diǎn)已經(jīng)大范圍的應(yīng)用于民用、軍用飛機(jī)系統(tǒng)中[1-3]。
表1 ARINC429總線數(shù)據(jù)格式
HI3210作為ARINC429總線協(xié)議常用的芯片之一,采用+3.3 V單電源供電,64-PIN QFN封裝,芯片尺寸為7.2 mm×7.2 mm。其外圍接口以及控制邏輯簡(jiǎn)單,具有8個(gè)ARINC429接收通道以及4個(gè)ARINC429發(fā)送。接收與發(fā)送功能的實(shí)現(xiàn)只需要配置20 MHz速率的SPI標(biāo)準(zhǔn)接口即可。其對(duì)數(shù)據(jù)的接收和發(fā)送可以通過(guò)CPU來(lái)實(shí)現(xiàn),亦可以通過(guò)掛載E2PROM加載配置信息后完成數(shù)據(jù)格式的重新打包、編輯、更改標(biāo)識(shí)號(hào)、發(fā)送等操作。芯片集成了32 KB片上用戶可配置數(shù)據(jù)存儲(chǔ)存儲(chǔ)器,為每個(gè)ARINC429數(shù)據(jù)接收分配2048個(gè)區(qū)塊的存儲(chǔ)空間。協(xié)議芯片每接收一個(gè)數(shù)據(jù)包,根據(jù)接收到數(shù)據(jù)包的標(biāo)識(shí)號(hào),將包內(nèi)的數(shù)據(jù)位存到與標(biāo)識(shí)號(hào)相對(duì)應(yīng)的內(nèi)存空間中,CPU只需通過(guò)訪問(wèn)標(biāo)識(shí)號(hào)對(duì)應(yīng)的內(nèi)存空間即可獲得ARINC429數(shù)據(jù)。協(xié)議芯片的這個(gè)處理機(jī)制可以大大降低CPU獲取ARINC429數(shù)據(jù)的時(shí)間要求[4]。
當(dāng)使用HI3210協(xié)議芯片作為設(shè)計(jì)ARINC429總線標(biāo)準(zhǔn)電路時(shí),其具有8個(gè)接收通道以及4個(gè)發(fā)送通道。因HI3210協(xié)議芯片是通過(guò)SPI總線與CPU進(jìn)行通信從而傳輸數(shù)據(jù),當(dāng)收發(fā)數(shù)據(jù)量大時(shí),若沒(méi)有新數(shù)據(jù)接收也一直對(duì)芯片進(jìn)行讀操作,會(huì)導(dǎo)致數(shù)據(jù)處理過(guò)慢、占用過(guò)多的系統(tǒng)資源等問(wèn)題的出現(xiàn),不能滿足系統(tǒng)性能需求。
HI3210協(xié)議芯片中的內(nèi)存地址分配如圖1所示。通過(guò)向芯片的配置寄存器寫入或讀出相應(yīng)的數(shù)據(jù),就可以初始化芯片的接收與發(fā)送功能,并獲取相應(yīng)的芯片狀態(tài)。例如管腳電平高低、芯片運(yùn)行模式、片上RAM以及EEPROM的實(shí)時(shí)狀態(tài)等。不僅如此,HI3210協(xié)議芯片還提供了可以使能數(shù)據(jù)接收中斷的寄存器以及查詢中斷標(biāo)志位的查找表,其查找表內(nèi)存地址范圍為0x7C00~0x7FFF。當(dāng)使用者在配置寄存器中使能了相應(yīng)接收中斷后,若ARINC 429接收到新數(shù)據(jù),其中斷掛起寄存器中對(duì)應(yīng)的通道位會(huì)自動(dòng)置位,從而幫助使用者判斷當(dāng)前是否有新數(shù)據(jù)的接收。當(dāng)監(jiān)測(cè)到有新數(shù)據(jù)的接收時(shí),再進(jìn)行相應(yīng)的讀取操作,將數(shù)據(jù)寄存器中的值讀出。
圖1 HI3210協(xié)議芯片內(nèi)存地址
在3210協(xié)議芯片中,中斷查找寄存器是實(shí)現(xiàn)監(jiān)測(cè)是否有新數(shù)據(jù)接收的關(guān)鍵,其內(nèi)存結(jié)構(gòu)如圖2所示。
圖2 中斷查找寄存器
將中斷查找寄存器中對(duì)應(yīng)通道、對(duì)應(yīng)標(biāo)識(shí)號(hào)的位置“1”之后,中斷被使能。此時(shí)若被置位的對(duì)應(yīng)通道、對(duì)應(yīng)標(biāo)識(shí)號(hào)收到新數(shù)據(jù)時(shí),在ARINC 429接收掛起中斷寄存器(APIR)中其相應(yīng)的通道位會(huì)被自動(dòng)置“1”。而標(biāo)識(shí)號(hào)也會(huì)在ARINC 429中斷地址寄存器(AIAR)中表示出來(lái)。接收掛起中斷寄存器(APIR)與中斷地址寄存器(AIAR)如圖3,圖4所示。
圖3 接收中斷掛起寄存器
圖4 中斷地址寄存器
例如,通過(guò)寫操作將通道1的中斷查找表全都置“1”,此時(shí)當(dāng)通道1標(biāo)識(shí)號(hào)為0xB7的消息到達(dá)時(shí),讀取接收掛起中斷寄存器,其APIR7位則會(huì)自動(dòng)置為“1”,而中斷寄存器中的AIAR1的8位中也會(huì)被自動(dòng)寫入0xB7。此時(shí)就可以通過(guò)讀取接收掛起中斷寄存器以及中斷地址寄存器中的值來(lái)判斷是否收到了新數(shù)據(jù),從而再進(jìn)行下一步的讀取數(shù)據(jù)操作。以利用接收掛起中斷寄存器為例,其軟件程序流程圖如圖5所示。
圖5 示例軟件程序流程圖
本文在ARINC429總線的數(shù)據(jù)傳輸環(huán)境中,設(shè)計(jì)了基于HI3210協(xié)議芯片的ARINC429總線接收數(shù)據(jù)監(jiān)測(cè)應(yīng)用,此應(yīng)用的實(shí)現(xiàn)主要是通過(guò)配置HI3210協(xié)議芯片內(nèi)部的寄存器,使得協(xié)議芯片在接收到新數(shù)據(jù)時(shí)產(chǎn)生相應(yīng)的接收中斷。通過(guò)讀取接收掛起中斷寄存器以及中斷地址寄存器中的值可以判斷是否有新數(shù)據(jù)接收,從而再進(jìn)行相應(yīng)的讀操作。此方法的應(yīng)用可以相應(yīng)減少數(shù)據(jù)讀取操作的執(zhí)行次數(shù),避免讀取函數(shù)的過(guò)度調(diào)用,減少程序的執(zhí)行時(shí)間及冗余程度,做到了節(jié)約系統(tǒng)資源,提升數(shù)據(jù)通信系統(tǒng)時(shí)效性的作用,為航空電子領(lǐng)域機(jī)載設(shè)備綜合性能的提升提供了新的支持。