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