王皓
【摘 要】隨著當(dāng)代航空平臺的飛速發(fā)展,各類航電系統(tǒng)愈發(fā)趨向于綜合化。CAN(control area network)總線因其傳輸速率高、傳輸穩(wěn)定、連接節(jié)點(diǎn)多、擴(kuò)展方便等特點(diǎn)非常適用于綜合導(dǎo)航子系統(tǒng)。本文介紹了CAN總線的詳細(xì)性能特點(diǎn)以及CAN總線控制器SJA1000的配置使用方法,并基于DSP+FPGA+SJA1000實(shí)現(xiàn)了單個(gè)導(dǎo)航功能模塊在綜合導(dǎo)航子系統(tǒng)中的通訊。
【關(guān)鍵詞】綜合導(dǎo)航系統(tǒng);CAN-BUS總線;DSP;SJA1000
【Abstract】With the development of airborne platforms, all kinds of avionics systems tend to be integrated.CAN BUS has a lot of characteristics such as high speed, transmission stability, more connection node, and convenient extension. Its very suitable of integrated navigation subsystem. This page introduces the performance feature of CAN BUS and the configuration method of CAN BUS controller SJA1000. This page Use DSP+FPGA+SJA1000 to realize the communication of single navigation functional module in integrated navigation subsystem.
【Key words】Integrated navigation subsystem; CAN BUS; DSP; SJA1000
0 引言
綜合導(dǎo)航子系統(tǒng),作為綜合航電系統(tǒng)中一個(gè)非常重要的子系統(tǒng),具備微波著陸(MLS)、儀表著陸(ILS)、塔康(TACAN)、伏爾(VOR)、指點(diǎn)信標(biāo)(MB)、衛(wèi)星導(dǎo)航(GPS)、敵我識別(IFF)、鏈路通信等功能。將眾多功能融入一個(gè)子系統(tǒng)中,就需要負(fù)責(zé)通訊的總線具備安全可靠、兼容性好、傳輸快等特點(diǎn)。CAN(control area network)控制器局部網(wǎng)屬于現(xiàn)場總線的范疇,它是一種開放式、數(shù)字化、多主方式的網(wǎng)絡(luò)通信協(xié)議,有效支持分布控制或?qū)崟r(shí)控制的串行通訊網(wǎng)絡(luò)。CAN總線采用雙線串行通信方式,通信介質(zhì)為雙絞線、銅軸電纜或光纖,檢錯(cuò)能力強(qiáng),可在航空平臺這種高噪聲、復(fù)雜電磁環(huán)境中工作;具備多主工作方式,且各節(jié)點(diǎn)信息分成不同的優(yōu)先級,采用非破壞性逐位仲裁技術(shù),優(yōu)先級較低的信息會讓優(yōu)先級高的信息優(yōu)先發(fā)送,可滿足各功能的實(shí)時(shí)要求;采用短幀結(jié)構(gòu),通信速率高(可達(dá)1Mbps,此時(shí)傳輸距離40M);每幀數(shù)據(jù)都帶有CRC校驗(yàn),出錯(cuò)率低,節(jié)點(diǎn)在嚴(yán)重錯(cuò)誤情況下會自動關(guān)閉等;這些特性使CAN總線非常適用于構(gòu)建多功能模塊的綜合導(dǎo)航子系統(tǒng)。
1 硬件電路實(shí)現(xiàn)
如圖1所示,單功能導(dǎo)航模塊硬件系統(tǒng)信號處理板框圖,其主要核心是兩個(gè)處理芯片,即FPGA(v4)和DSP(TI6400)。其中FPGA主要作用是作為DSP和外圍接口的橋梁及中頻信號的采樣和濾波、解調(diào),DSP作為數(shù)據(jù)解算核心和接口控制核心。FPGA通過數(shù)據(jù)總線將前端射頻模塊處理完畢的中頻信號進(jìn)行采樣、濾波等操作,再把數(shù)據(jù)存放在指定的內(nèi)建存儲器上。DSP通過EMIF總線接口讀取相應(yīng)的數(shù)據(jù),并作數(shù)據(jù)解算處理和接口控制指令的執(zhí)行。
CAN控制器SJA1000是Philips公司生產(chǎn)具有BasicCan模式(符合CAN 2.0A協(xié)議)和PeliCan模式(符合CAN2.0B協(xié)議),I/O接口為OC門,電平為5V,提供Intel和Motorola兩種尋址方式。在本文中,CAN控制器SJA1000采用Intel地址數(shù)據(jù)多路復(fù)用總線模式。主要信號線有地址數(shù)據(jù)復(fù)用線AD7~AD0,地址選通線ALE為低電平,片選線/CS,讀使能/RD,寫使能/WR。在Intel模式下讀寫SJA1000時(shí),地址和數(shù)據(jù)是分時(shí)傳送的,地址在前,數(shù)據(jù)在后。ALE為高電平時(shí),為地址總線周期;當(dāng)ALE為低電平,/CS為低電平,/RD或/WR為低電平時(shí),為數(shù)據(jù)總線周期。SJA1000總線讀寫周期時(shí)序如圖2.
SJA1000的數(shù)據(jù)和地址信號為分時(shí)復(fù)用的,而FPGA中不存在地址的概念,設(shè)計(jì)的關(guān)鍵就是要把SJA1000中的寄存器地址當(dāng)作數(shù)據(jù)寫入。圖3為對SJA1000中寄存器的讀寫狀態(tài)機(jī)流程圖。
2 SJA1000初始化
根據(jù)設(shè)計(jì)原理,SJA1000工作在PeliCan模式下,其內(nèi)部寄存器對于微控制器而言,表現(xiàn)為片上內(nèi)存映射的外部寄存器,共128個(gè)字節(jié)。在工作模式下和復(fù)位模式下,其具有不同的內(nèi)部地址定義。表1:列出了SJA1000在PeliCan模式、CAN信息采用擴(kuò)展幀形式下的內(nèi)部寄存器地址的分配情況。
模塊上電工作后DSP先通過FPGA對SJA1000芯片的模式寄存器(MODR)、命令寄存器(CMR)、中斷使能寄存器(IER)、時(shí)鐘分頻寄存器(CDR)、總線定時(shí)器(BTR)驗(yàn)收代碼寄存器(ACR),驗(yàn)收屏蔽寄存器(AMR)、輸出控制寄存器(OCR)等寄存器進(jìn)行讀寫(每個(gè)寄存器的地址空間都是一個(gè)字節(jié)),對波特率、屏蔽碼、校驗(yàn)碼、工作模式等進(jìn)行初始化,流程圖如圖4:
MODR:將模式寄存器的0位置1進(jìn)入復(fù)位模式,復(fù)位模式下將寄存器的1位和2位分別置0,CAN總線使用正常模式;將寄存器3位置1,使用單濾波模式;將模式寄存器的0位置0后,SJA1000退出復(fù)位模式,進(jìn)入正常工作模式。
IER:將中斷使能寄存器的0位置,關(guān)閉當(dāng)SJA1000接收緩存器“滿”時(shí)產(chǎn)生的接收中斷。
CMR:將命令寄存器的1位置1,停止上一個(gè)發(fā)送請求;并將2位置1,釋放接收緩沖器FXFIFO中存儲的報(bào)文。
CDR:將時(shí)鐘分頻寄存器的3位置1,關(guān)閉時(shí)鐘;將7位置1,使用Pelican模式。
ACR/AMR:驗(yàn)收濾波器由驗(yàn)收代碼寄存器(ACR) 和驗(yàn)收屏蔽寄存器(AMR)定義。要接收的報(bào)文的位組合格式在驗(yàn)收代碼寄存器中定義,相應(yīng)的驗(yàn)收屏蔽寄存器允許定義某些位“不相關(guān)”。本模塊使用單濾波模式,CAN報(bào)文為擴(kuò)展幀,所以其過濾原理如圖5.根據(jù)協(xié)議配置ACR0,ACR1,ACR2,ACR4和AMR0,AMR1,AMR2,AMR3寄存器,來實(shí)現(xiàn)節(jié)點(diǎn)過濾總線上其它模塊的CAN報(bào)文信息。
OCR:在復(fù)位模式下將控制寄存器的0位置0,1位置1,使用正常輸出模式;
BTR:根據(jù)波特率計(jì)算公式,將總線定時(shí)器0的賦值0x31,;根據(jù)周期長度,采樣點(diǎn)位置和數(shù)目,將總線定時(shí)器1賦值0x1c,此時(shí)波特率位500Kbps。
3 數(shù)據(jù)的收發(fā)
CAN節(jié)點(diǎn)的接收程序要完成檢測CAN控制器狀態(tài),確定接收緩沖器中有可讀取報(bào)文。讀取接收緩沖器中的數(shù)據(jù),釋放接收緩沖器。讀取仲裁丟失捕捉寄存器,和錯(cuò)誤代碼捕捉寄存器,
CAN節(jié)點(diǎn)的接收方式可以采用查詢方式,即按照一定周期查詢狀態(tài)寄存器(SR),當(dāng)接收緩沖器中有可用報(bào)文時(shí)讀取。這種方式雖然簡單,但嚴(yán)重影響了系統(tǒng)的實(shí)時(shí)性。因此該模塊采用中斷方式進(jìn)行接收數(shù)據(jù),當(dāng)有可用報(bào)文進(jìn)入接收緩沖器后,SJA1000產(chǎn)生接收中斷,DSP讀取數(shù)據(jù)寄存器取報(bào)文。然后將命令寄存器(CMR)的2位置1,釋放接收緩沖器的內(nèi)存空間,最后讀取仲裁隨時(shí)捕捉寄存器(ALC)和錯(cuò)誤代碼捕捉寄存器(ECC)以此來釋放ALC和ECC。
CAN節(jié)點(diǎn)的發(fā)送程序要完成的任務(wù)為根據(jù)報(bào)文要發(fā)送的目的地址,正確配置報(bào)文標(biāo)識符寄存器,準(zhǔn)備要發(fā)送的數(shù)據(jù),配置相應(yīng)的寄存器,在SJA1000可以發(fā)送報(bào)文時(shí)啟動報(bào)文發(fā)送。其流程圖如圖7:
當(dāng)DSP需要發(fā)送CAN報(bào)文時(shí),DSP先通過FPGA讀取SJA1000的SR(狀態(tài)寄存器)的4位,以此來確定是否正在接收報(bào)文。當(dāng)無可接收報(bào)文時(shí)再去查詢SR的3位,來確定上一個(gè)報(bào)文發(fā)送是否完畢。上一個(gè)報(bào)文發(fā)送完畢后DSP去查詢SR的2位,來確定發(fā)送緩存器是否被鎖定。只有發(fā)送緩存器沒有被鎖定后再將需要發(fā)送的CAN報(bào)文依次寫入TXBSR(發(fā)送緩存器)中,最后將CMR(命令寄存器)的0位置1將TXBSR中的CAN報(bào)文發(fā)送出去,CAN幀格式在本文中就不進(jìn)行贅述了。
4 總結(jié)
上述內(nèi)容詳細(xì)介紹了單個(gè)導(dǎo)航功能模塊在以CAN總線為通信基礎(chǔ)的綜合導(dǎo)航子系統(tǒng)中的硬件實(shí)現(xiàn)方式和軟件實(shí)現(xiàn)方式。硬件采用DSP+FPGA+SJA1000的基本配置方式,利用此種方式降低了軟件調(diào)試難度,減輕處理器運(yùn)行負(fù)載,給導(dǎo)航功能留足充分的計(jì)算能力。軟件實(shí)現(xiàn)方法采用CAN2.0B、擴(kuò)展幀、PeliCan模式,最大限度的提高了總線使用性能指標(biāo)。
【參考文獻(xiàn)】
[1]李真花,崔健,等.CAN總線輕松入門與實(shí)踐.北京.北京航空航天大學(xué)出版社.
[2]唐苗,等.CAN總線技術(shù)及其在魚雷制導(dǎo)系統(tǒng)中的應(yīng)用.西安.西北工業(yè)大學(xué)航海學(xué)院.2006.
[3]岳奎,劉少君,等.SJA1000內(nèi)存器的VHDL語言讀寫設(shè)計(jì)與應(yīng)用.廣州.計(jì)算機(jī)與數(shù)字工程.2009,10.
[4]馬麗,崔海東,等.飛機(jī)綜合導(dǎo)航系統(tǒng)淺議.漢中.科技視界.
[5]姚君,等.基于狀態(tài)機(jī)方法的CAN總線通信的FPGA實(shí)現(xiàn).長春.應(yīng)用天地.2015,3.
[責(zé)任編輯:朱麗娜]