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