基于TJA1080的FlexRay總線接口設(shè)計
摘要 介紹基于TJA1080的FlexRay總線在數(shù)字信號處理器(DSP)C5509上的實現(xiàn)。整個系統(tǒng)以DSP為核心,采用TJA1080總線控制器實現(xiàn)FlexRay通信協(xié)議,進(jìn)行數(shù)據(jù)收發(fā);制造簡單,集成度高,功耗低,適用于車內(nèi)多種電子設(shè)備的局域總線實現(xiàn)。
關(guān)鍵詞 FlexRay 總線 TJA1080 C5509
引言
現(xiàn)今的汽車電子設(shè)備越來越多,早期的CAN總線已經(jīng)不能很好地解決眾多電子設(shè)備之間的通信,通信速度更高和通信更安全的車內(nèi)總線成為汽車電子的迫切需求。FlexRay總線是最近推出的一種先進(jìn)高速串行同步和異步通信系統(tǒng)。該總線具有故障容限,可提供500 kbps~10 Mbps的確定數(shù)據(jù)傳輸速率和24位CRC(循環(huán)冗余)校驗碼。其通信速度和安全機制均滿足目前車內(nèi)電子設(shè)備的需求。
本文介紹一種在數(shù)字信號處理器(DSP)C5509上實現(xiàn)FlexRay總線的方法。使用恩智浦半導(dǎo)體公司(NXP,原飛利浦半導(dǎo)體公司)的 FlexRay總線控制器TJA1080。TJA1080負(fù)責(zé)將各個設(shè)備的數(shù)據(jù)傳輸?shù)紻SP,由DSP對數(shù)據(jù)進(jìn)行分析和處理。由于系統(tǒng)采用DSP作為核心,故可以對車載電子的數(shù)據(jù)進(jìn)行復(fù)雜的處理。
1 FlexRay總線及其控制器
TJA1080FlexRay總線是一種全新的總線系統(tǒng)。其主要特性有:
?、?nbsp; 支持雙通信通道,每個通道的速度均達(dá)到10 Mbps。與CAN協(xié)議相比,可用的帶寬提高了10~40倍。
② 總線數(shù)據(jù)的訪問是基于同步時基的。該時基通過協(xié)議自動建立和同步,并提供給應(yīng)用層。時基的精確度介于0.5 μs和10 μs之間。由于采用同步時基,消息在通信周期中擁有固定位置,接收器已經(jīng)提前知道了消息到達(dá)的時間,因此可以可靠、準(zhǔn)時地傳送安全應(yīng)用相關(guān)的信息。
?、? FlexRay總線提供消息冗余傳輸和非冗余傳輸兩種選擇,系統(tǒng)可以進(jìn)行優(yōu)化,以提高可用性或吞吐量。用戶無需調(diào)整現(xiàn)有節(jié)點中的軟件就可以擴(kuò)展整個系統(tǒng);同時,支持總線或星型拓?fù)浣Y(jié)構(gòu)。FlexRay總線提供了大量配置參數(shù)(如通信周期的持續(xù)時間、消息長度等),可以支持對系統(tǒng)進(jìn)行調(diào)整,以滿足不同應(yīng)用場合的需求。
④ FlexRay總線在重負(fù)載下可以關(guān)閉部分節(jié)點,使其僅接收數(shù)據(jù)而不發(fā)送數(shù)據(jù),減少數(shù)據(jù)重發(fā)次數(shù),使得總線負(fù)載很快下降。
FlexRay總線的這些特性使其可以替代CAN總線,適合車載骨干網(wǎng)絡(luò)、分布式控制系統(tǒng)以及安全系統(tǒng)等應(yīng)用場合。目前,已有多家公司生產(chǎn)FlexRay總線控制器。本文選用恩智浦半導(dǎo)體公司的TJA1080總線控制器,介紹其內(nèi)部結(jié)構(gòu)以及與DSP的軟硬件連接方法。
TJA1080總線控制器的內(nèi)部結(jié)構(gòu)如圖1所示。從圖中可以看出,TJA1080總線控制器主要由狀態(tài)機、信號路由器、輸入/輸出管理模塊、收發(fā)模塊以及發(fā)送器等組成。
物理層通道有一個獨立的接收發(fā)送通道,速度最高可以達(dá)到10Mbps。在工作狀態(tài)下,主機可以訪問TJA1080的接收模塊和發(fā)送器,通過對其操作實現(xiàn)對物理層數(shù)據(jù)的收發(fā)??偩€上的數(shù)據(jù)幀都將到達(dá)總線上所有的TJA1080,每一個TJA1080在收到總線數(shù)據(jù)幀后,都將經(jīng)過接收濾波器;濾波器將不屬于自己地址的數(shù)據(jù)幀濾除,只將屬于自己的數(shù)據(jù)幀和廣播幀存儲到接收FIFO中。
TJA1080的溫度檢測模塊用于檢測設(shè)備溫度,超過一定溫度將自動關(guān)閉總線收發(fā)。喚醒模塊負(fù)責(zé)將處于SLEEP狀態(tài)的總線節(jié)點喚醒,但超過一定時間仍無數(shù)據(jù)收發(fā)后重新進(jìn)入SLEEP狀態(tài),從而降低整個系統(tǒng)功耗??偩€失效檢測器負(fù)責(zé)檢測整個總線的狀態(tài),當(dāng)發(fā)現(xiàn)總線負(fù)載較重時,將自動關(guān)閉發(fā)送器,此時該節(jié)點只能接收數(shù)據(jù)而不能發(fā)送數(shù)據(jù),這樣總線上的數(shù)據(jù)幀將很快被相應(yīng)節(jié)點接收,迅速減輕總線負(fù)載。低功耗收發(fā)模塊負(fù)責(zé)低功耗工作模式下數(shù)據(jù)的收發(fā),采用減少數(shù)據(jù)重發(fā)機制,雖然降低了數(shù)據(jù)安全性,但同時也降低了整個系統(tǒng)功耗;配合溫度檢測模塊,可以從軟件上實現(xiàn)降低總線溫度。
主機對TJA1080的管理主要是通過輸入/輸出管理模塊進(jìn)行數(shù)據(jù)的收發(fā)操作,下面結(jié)合DSP介紹接收數(shù)據(jù)的軟硬件實現(xiàn)方法。
2 系統(tǒng)硬件結(jié)構(gòu)
整個系統(tǒng)由C5509、TJA1080、ADC/DAC以及Flash等組成,其硬件連接如圖2所示。DSP是核心控制單元;ADC用于采集模擬信號,轉(zhuǎn)變成數(shù)字信號;DAC負(fù)責(zé)將數(shù)字信號轉(zhuǎn)換成模擬信號;Flash用于保存DSP所需的程序,供DSP上電調(diào)用。此外,使用DSP的HPI接口連接到PC機,這樣所有的總線數(shù)據(jù)均可以通過PC機存儲和顯示,PC機的數(shù)據(jù)也可以通過DSP發(fā)送到總線上。
ADC負(fù)責(zé)采集電子設(shè)備的數(shù)據(jù),可以是溫度傳感器數(shù)據(jù)、顏色傳感器數(shù)據(jù)、語音信號、圖像信號或者其他信號。DSP對這些數(shù)據(jù)進(jìn)行處理后,將處理后的結(jié)果根據(jù)不同的情況通過TJA1080發(fā)送到總線上的其他節(jié)點;相反,DSP通過TJA1080讀取總線上其他節(jié)點發(fā)送的數(shù)據(jù)幀,并對這些數(shù)據(jù)幀進(jìn)行處理,將結(jié)果發(fā)送到DAC,可以實現(xiàn)對本節(jié)點電子設(shè)備狀態(tài)的控制。
3 TJA1080與C5509的硬件設(shè)計
TJA1080與C5509的連接是系統(tǒng)硬件連接的主要組成部分,如圖3所示。使用C5509的緩沖串口(McBSP)連接TJA1080。緩沖串口是C5509的多通道串口連接設(shè)備。TJA1080的連接為異步串口(UART),這里使用DSP的緩沖串口模擬異步串口,實現(xiàn)與TJA1080的連接。TJA1080的其他輸入/輸出引腳使用C5509的通用I/O(GPIO)口控制,實現(xiàn)對TJA1080的各種狀態(tài)的檢測和控制。
將緩沖串口的數(shù)據(jù)輸入(DR)和幀同步輸入(FSR)同時與UART的發(fā)送數(shù)據(jù)線相連,這是因為UART的串行數(shù)據(jù)線既有數(shù)據(jù)信息,又有幀信息。而此時UART的接收數(shù)據(jù)線與緩沖串口的數(shù)據(jù)輸出線相連。
DSP使用緩沖串口內(nèi)部的采樣時鐘,緩沖串口可以配置成接收和發(fā)送數(shù)據(jù),UART的1位數(shù)據(jù)對應(yīng)于緩沖串口的16位數(shù)據(jù)。軟件必須將DSP要發(fā)送的1位數(shù)據(jù)擴(kuò)展成需要發(fā)送的16位數(shù)據(jù),同樣也要將接收到的每16位數(shù)據(jù)壓縮成1位數(shù)據(jù)。這就要求設(shè)置采樣速率發(fā)生器產(chǎn)生一個內(nèi)部串行時鐘,是串行波特率的16倍。因為每個UART字都以一個下降沿開始,這個下降沿可以用作幀同步輸入,因此數(shù)據(jù)線和幀同步信號都連接到UART的輸出上就可以得到這一信號。
為了以8N1格式(8個數(shù)據(jù)位,沒有奇偶校驗位,1位停止位)給UART發(fā)送1位數(shù)據(jù),發(fā)送器應(yīng)該分為兩個部分:第一部分包含9個16位的字,是起始位和8個數(shù)據(jù)位;第二部分包含2個8位的字,是停止位。其他UART的格式可以通過調(diào)整幀字的數(shù)量來實現(xiàn)。當(dāng)以16位數(shù)據(jù)發(fā)送UART時,UART的“1”被編碼為0xffff,“0”被編碼為0x0000。停止位編碼為8位字,以便調(diào)整為1.5位停止位,以適應(yīng)可能需要的其他UART格式設(shè)置。數(shù)據(jù)傳輸?shù)臅r序如圖4所示。
4 TJA1080與C5509的軟件設(shè)計
C5509與TJA1080的數(shù)據(jù)通信流程如圖5所示。系統(tǒng)初始化后,C5509判斷當(dāng)前是否有數(shù)據(jù)讀寫。數(shù)據(jù)讀是通過判斷是否有掛起的串口接收中斷,該中斷由TJA1080產(chǎn)生,一旦TJA1080收到總線數(shù)據(jù)幀,就發(fā)出該中斷;數(shù)據(jù)寫是通過判斷上層程序是否有數(shù)據(jù)發(fā)送的軟件中斷,若有,則通過緩沖串口發(fā)送到TJA1080。無數(shù)據(jù)讀寫的情況下,C5509將定期檢測TJA1080的收使能(RXEN)和錯誤輸出(ERRN)引腳,以便確定 TJA1080是否正常工作;也可以根據(jù)需要,將TJA1080設(shè)置到低功耗狀態(tài)。如果讀取的數(shù)據(jù)的校驗錯誤較多,則表明無線通信當(dāng)前的信道噪聲很大,或者TJA1080的總線被干擾出現(xiàn)紊亂。C5509通過I/O口設(shè)置總線保護(hù)使能(BGE)引腳為高,使得TJA1080停止向總線發(fā)送數(shù)據(jù),從而避免在低信噪比情況下多次重復(fù)發(fā)送同樣的數(shù)據(jù),縮短無效通信時間。
5 總結(jié)
本文詳細(xì)介紹了基于C5509和TJA1080的總線控制器連接設(shè)計方法。使用C5509的緩沖串口連接總線控制器TJA1080,實現(xiàn)FlexRay總線的數(shù)據(jù)收發(fā);使用TJA1080模塊的串口對數(shù)據(jù)操作。整個系統(tǒng)連接簡單,實用性強。
參考文獻(xiàn)
[1] 汪安民. TMS320C54xxDSP實用技術(shù)[M]. 第2版. 北京:清華大學(xué)出版社,2006.
[2] 汪安民,程昱.DSP應(yīng)用開發(fā)實用子程序[M]. 北京:人民郵電出版社,2005.
[3] Texas Instruments Inc. C5509 Dual-Core Processor Data Manual,2004.
[4] Philips Semiconductors Corp. TJA1080 Data Sheet FlexRay Transceiver,2006.