文獻標識碼: B
文章編號: 0258-7998(2011)11-0040-04
目前在一類無人機分布結構的飛行控制計算機中廣泛使用CAN作為內部通信總線,,其總線采用基于事件觸發(fā)的通信機制,速率為1 Mb/s[1],。隨著無人機的不斷發(fā)展,,作為飛行控制系統(tǒng)核心的飛行控制計算機對內部總線的數(shù)據(jù)傳輸速率和可靠性的要求也越來越高,CAN總線在帶寬和實時性等方面已經(jīng)不能滿足要求,。為了解決這個問題,,本文分析研究了多種串行通信總線如ARINC429、1553B等,但其通信速率均不能滿足要求[2-3],。而 FlexRay作為一種新興的通信總線,,除具有10 Mb/s的通信速率外,其確定性和可靠性能更好地滿足新型分布式結構飛行控制計算機內部總線數(shù)據(jù)通信需求,。
1 FlexRay通信協(xié)議概述
1.1 FlexRay協(xié)議特性
FlexRay總線作為一種新型的總線通信協(xié)議,,與傳統(tǒng)的CAN相比,在通信速率,、確定性,、可靠性等方面有著明顯的優(yōu)勢[4-5]:
(1)更高的傳輸速率。FlexRay提供A/B兩個通信信道,,每個信道傳輸速率最高可達到10 Mb/s,,與CAN總線相比,它能將可用帶寬提高10~40倍,,而且總線利用率可超過90%,。
(2)確定性。FlexRay采用了基于同步時基的媒質訪問機制,,時基的精確度介于0.5 μs~10 μs之間(通常為1~2 μs),。
(3)可靠性。FlexRay提供的雙通道通信,,可進行冗余消息傳輸,,極大地提高了數(shù)據(jù)傳輸可靠性。此外,,F(xiàn)lexRay還包含總線監(jiān)控功能,,可實時對總線活動進行監(jiān)測控制,。
(4)靈活性,。FlexRay提供了大量參數(shù)配置,如通信周期的大小,、負載段長度等,,可以根據(jù)需要靈活調整,支持星型,、總線型,、混合型等多種拓撲結構,而CAN僅支持總線型拓撲結構,。
1.2 FlexRay總線通信機制
FlexRay采用基于循環(huán)往復通信周期的媒質訪問機制,,每個通信周期包括了靜態(tài)段、動態(tài)段,、符號窗口以及網(wǎng)絡空閑時間四個部分,。在周期的靜態(tài)段,F(xiàn)lexRay采用靜態(tài)的時分多路訪問(TDMA)機制;而在周期的動態(tài)段,,F(xiàn)lexRay則采用柔性時分多路訪問(FTDMA)機制,。
每個通信周期的靜態(tài)段和動態(tài)段均是由數(shù)個時隙(slot)組成的。在周期的靜態(tài)段,,由若干個時間寬度相同的靜態(tài)時隙(Static Slot)組成,,每個時隙單獨分配給某一個節(jié)點,在該時隙內總線控制權由此節(jié)點唯一占有,,節(jié)點在總線上進行數(shù)據(jù)發(fā)送,,即使該節(jié)點在該時隙內沒有數(shù)據(jù)需要向總線發(fā)送,其所分配的時隙也不會被其他節(jié)點所占用,。在周期的動態(tài)段,,引入了一個稱為微時隙(minislot)的概念。如果在某個時隙有消息在總線上發(fā)送,,則該動態(tài)時隙的長度等于整個消息所需的若干個微時隙的總長度,;如果沒有消息發(fā)送,則該動態(tài)時隙長度等于一個微時隙的長度,。在周期的某個時隙內部,,僅有一個節(jié)點被允許在總線上進行數(shù)據(jù)發(fā)送,且該節(jié)點所要發(fā)送消息的幀標識符與當前的時隙計數(shù)器值必須相等,。幀標識符是在系統(tǒng)設計階段靜態(tài)地分配給各節(jié)點的,。由于同一幀標識符不允許被分配給不同的節(jié)點,因此,,可以確??偩€上不會發(fā)生媒質訪問沖突現(xiàn)象[5]。
2 飛行控制計算機內部FlexRay網(wǎng)絡結構
樣例飛行控制計算機采用分布式總線網(wǎng)絡結構,,主要由CPU單元,、模擬量接口單元、開關量接口單元和串口量接口單元四部分組成,。其中,,CPU單元主要功能是為實現(xiàn)整個飛行控制系統(tǒng)的控制進行律解算、實現(xiàn)外圍設備的管理及余度管理,,是分布式余度飛行控制計算機的核心主控單元,。模擬量接口單元、開關量接口單元,、串行量接口單元為分布式余度飛行控制計算機的數(shù)據(jù)采集及輸出部分,,三個功能單元主要負責接收傳感器數(shù)據(jù)及采集外圍設備的狀態(tài),同時也輸出由中央處理單元解算及處理后的數(shù)據(jù)[6],。系統(tǒng)中每個單元作為一個FlexRay節(jié)點,,節(jié)點之間通過FlexRay總線進行數(shù)據(jù)通信交互,,如圖1所示。
3 FlexRay通信節(jié)點方案
FlexRay節(jié)點有三種架構方式,,目前已經(jīng)實現(xiàn)的有MCU+CC+BD和MCU+BD兩種方式,。MCU+CC+BD是最早的FlexRay節(jié)點架構方式,在這種方式下MCU是主機處理器,,通過配置通信控制器(CC)中的寄存器設置其工作方式,,然后控制它的工作狀態(tài)實現(xiàn)數(shù)據(jù)收發(fā);通信控制器在鏈路層和物理層上實現(xiàn)FlexRay網(wǎng)絡協(xié)議的可編程組合電路,,完成主機控制器和總線驅動器之間的數(shù)據(jù)交互和流程控制,;總線收發(fā)器(BD)將通信控制器與總線相連,通過編碼處理將FlexRay通信控制器要發(fā)送的數(shù)據(jù)發(fā)送到總線上,,通過譯碼處理將來自總線的數(shù)據(jù)傳送到FlexRay通信控制器中[7],。而在MCU+BD的方式下,MCU集成了FlexRay通信控制器的主機處理器,,整個節(jié)點的集成度有了提高,。
根據(jù)樣例飛行控制計算機系統(tǒng)資源,本設計采用第一種架構方式,,MCU采用C8051F120單片機,。C8051F120有16 bit地址總線,8 bit數(shù)據(jù)總線,,處理器可以采用外部有源晶振或內部晶振,,內部集成有8 448(8 K+256)B的RAM、128 KB外部數(shù)據(jù)區(qū),、64 KB外部程序區(qū),;采用流水線指令結構:70%指令的執(zhí)行時間為1個或2個系統(tǒng)時鐘周期。通信控制器采用飛思卡爾公司2008年推出的,、支持FlexRay協(xié)議2.1A的MFR4310,。MFR4310提供兩個獨立的FlexRay通道A/B,可多達254 B數(shù)據(jù)配置的128個消息緩沖器,,以及兩個可配置接收先進先出(FIFO)消息緩沖器,??偩€收發(fā)器采用恩智浦公司的TJA1080A,,其通信速率高達10 Mb/s,并且可工作于總線型和星型兩種拓撲結構,。FlexRay通信節(jié)點結構如圖2所示,。
4 FlexRay節(jié)點設計
4.1 節(jié)點總體設計
FlexRay總線節(jié)點設計如圖3所示。C8051F120復位時從片內Flash存儲器執(zhí)行程序,,進入正常工作模式,。先進行C8051F120系統(tǒng)模塊內其他器件的初始化以及系統(tǒng)需要的其他初始化,,然后開始FlexRay通信:單片機產生需要發(fā)送的數(shù)據(jù),通過位擴展模塊將數(shù)據(jù)信號送到通信控制器MFR4310中對數(shù)據(jù)信號進行編碼等處理后送到收發(fā)器TJA1080A,,收發(fā)器對其進行電平變換,,然后再送到總線上與其他節(jié)點進行數(shù)據(jù)交換。
C8051F120單片機引入了數(shù)字交叉開關,,可通過設置交叉開關將片內的計數(shù)器/定時器,、串行總線、硬件中斷,、ADC轉換啟動輸入,、比較器輸出以及微控制器內部的其他數(shù)字信號根據(jù)需要配置到端口P0~P3的I/O引腳;C8051F120共有8個數(shù)字I/O端口,,可以將外部存儲器接口按需要配置到低端口或高端口,,并可配置地址總線和數(shù)據(jù)總線是否復用。
4.2 C8051F120與MFR4310接口連接
C8051F120與MFR4310連接時,,將外部存儲器接口配置到高端口P4~P7,,地址數(shù)據(jù)總線采用非復用方式。MFR4310必須選擇AMI(Asynchronous Memory Interface)模式,。由于C8051F120為8 bit單片機,,而MFR4310數(shù)據(jù)總線為16 bit,所以需要進行位擴展,。如圖4所示,,MFR4310低8 bit(D0~D7)接單片機P7口,高8 bit D8~D15分別接鎖存器(74HC573)的D0~D7和單片機的P3口,。單片機讀寫數(shù)據(jù)的時序為:C8051F120寫數(shù)據(jù)時,,P3口的輸出驅動器使能,寫高8 bit數(shù)據(jù)D8~D15到P3口上,,寫低8 bit數(shù)據(jù)D0~D7到P7口,,使能A12選通MFR4310,將P7口和P3口的16 bit數(shù)據(jù)D0~D15寫到總線控制器中,,寫完數(shù)據(jù)后禁止P3口的輸出驅動器,;C8051F120讀數(shù)據(jù)時,RD#,、A12都有效,,選通MFR4310,單片機讀低8 bit數(shù)據(jù)D0~D7,,然后使A12無效,、A13有效,此時74HC573的LE#電平由高變低,,鎖存器將對應的高8 bit數(shù)據(jù)D8~D15鎖存,,然后單片機將讀入高8 bit數(shù)據(jù),。
4.3 TJA1080A與物理層接口連接
根據(jù)FlexRay電氣物理層協(xié)議要求[8],總線驅動器TJA1080A與物理層接口的電路如圖5所示,。其中T1為共模扼流電感,,應滿足頻率在20 MHz~50 MHz時,其共模扼流電感的共模衰率最大,。為了保證更好的電磁兼容性,,在收發(fā)器與物理層之間引入了一個隔離終端,即將終端電阻分成兩個阻值相同的電阻R7和R8,。電阻R7與R8的精度控制在1%以內,,使其應滿足2|R7-R8|/(R7+R8)≤2%,以保證二者良好匹配,,否則匹配性過差會導致信號收發(fā)時產生很高的電磁輻射,。
4.4 系統(tǒng)參數(shù)配置
通過配置C8051F120中的EMI0CF寄存器,將外部存儲器接口配置到單片機高端口P4~P7,,地址數(shù)據(jù)總線工作在非復用模式,。而MFR4310必須工作在異步存儲器接口(AMI)模式下,此時MFR4310有12根地址線和16根數(shù)據(jù)線,。因此選用C8051F120單片機的A0~A11作為地址線,,A12作為MFR4310的片選信號。從而MFR4310在C8051F120中的存儲地址空間為0xE000~EFFF,。地址映射部分代碼如下:
#define CC_base_address 0xE000
#define CC_FRM_base_address 0x0400
#define FrMVR 0x0000
#define FrMCR 0x0001
……
#define FrMBCCSR0 0x0080
#define FrMBCCFR0 0x0081
#define FrMBFIDR0 0x0082
#define FrMBIDXR0 0x0083
FlexRay總線協(xié)議提供了大量參數(shù)配置,,可以靈活地根據(jù)系統(tǒng)需求進行相應的調整,如通信周期大小,、宏節(jié)拍MT(Macrotick)的長度,、靜態(tài)段、動態(tài)段,、標識窗的時間寬度,、負載段的長度、同步節(jié)點的選擇,、單雙通道選擇,、通信速率、靜態(tài)段時隙的分配,、動態(tài)段的訪問優(yōu)先級等,。
4.5 FlexRay初始化流程
在FlexRay節(jié)點可以參與到總線上進行通信前,需要對其進行一系列的初始化操作,,包括FlexRay模塊配置,、通信集群協(xié)議參數(shù)配置和信息緩沖器配置等,,接著通過對相應的寄存器進行配置完成各緩沖器和FIFO的初始化,,并設置回調函數(shù)和初始化計時器,,然后啟動節(jié)點開始通信。具體的FlexRay初始化流程圖如圖6所示,。
5 測試驗證
對設計的FlexRay節(jié)點進行了測試驗證,,實驗中,將設計的兩個MFR4310節(jié)點相連進行數(shù)據(jù)通信:MFR4310節(jié)點I在時隙1發(fā)送數(shù)據(jù),,在時隙4接收數(shù)據(jù),;MFR4310節(jié)點II在時隙4發(fā)送數(shù)據(jù),在時隙1接收數(shù)據(jù),。每個節(jié)點都對接收到的數(shù)據(jù)幀數(shù),、丟幀數(shù)和發(fā)生錯誤幀數(shù)進行計數(shù),兩個MFR4310節(jié)點通過串口將通信結果輸出到PC機上以供觀測,,同時也可以通過示波器直接觀測總線波形進行監(jiān)控,。測試方案如圖7所示。
設置通信速率為10 Mb/s,,每幀消息的負載長度為127字,,通信周期為50 Hz,經(jīng)過12 h連續(xù)的通信測試(6 h常溫和6 h-45 ℃的低溫),,其中6 h的低溫通信結果如表1所示,。從表中可以看出丟幀數(shù)和錯誤計數(shù)都為0,表明節(jié)點設計正確,,滿足內部總線對誤碼率的指標要求,,同時也驗證了FlexRay總線在不同溫度環(huán)境下的高速率通信可靠性和安全性。
FlexRay作為一種新型的高速串行總線標準,,已經(jīng)在寶馬X5,、X6和7系列轎車上都獲得了成功的應用。相比于CAN總線,,F(xiàn)lexRay傳輸速率更高,,也更安全靈活。本文根據(jù)樣例飛行控制計算機系統(tǒng)資源,,設計了以C8051F120單片機為中央處理單元的FlexRay通信節(jié)點,,并對其進行了測試驗證,結果正確,,能滿足系統(tǒng)要求,,為以后在新型飛行控制計算機上用FlexRay總線替代CAN打下了堅實基礎。相信將來必定會像CAN總線一樣在工業(yè)控制,、航空航天等其他領域得到廣泛的應用,。
參考文獻
[1] 任立平,周軍.CAN總線高層協(xié)議CANaerospace及其設計應用[J].測控技術,,2008,,27(2):59-61.
[2] 劉迎歡,,羅志強.ARINC429協(xié)議和與之對應的俄羅斯標準的比較[J].航空電子技術,2002,,33(1):11-16.
[3] 趙睿,,秦貴和,范鐵虎.FlexRay通信協(xié)議的總線周期優(yōu)化[J].計算機應用研究,,2010,,27(10):3847-3850.
[4] 劉祥志,毛成勇,,張瑞鋒,,等.基于FlexRay的線控制動系統(tǒng)的研究[J].山東科學,2010,,23(3):35-37.
[5] FlexRay consortium.FlexRay communications systemprotocol specification.Version 2.1,,Revision A[EB/OL].www.flexray.com.2005.
[6] 張增安,陳欣,,呂迅竑.一種用于無人機的分布式飛行控制系統(tǒng)設計[J].計算機系統(tǒng)應用,,2010,19(8):16-20.
[7] 萬苓,,孔峰.基于DSP FlexRay節(jié)點的應用研究[J].廣西工學院學報,,2010,21(2):32-35.
[8] FlexRay consortium. FlexRay communications system electrical physical layer specification Version 2.1,,Revision.B[EB/OL].www.FlexRay.com.2005.