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