FlexRay總線是一種點對點形式的具有星形拓撲結構的數據傳輸總線。提供了傳統總線通信協議所不具有的一些特性。FlexRay簡化了車載電子設備之間的通信系統架構,使得車載電子單元變得更加穩定和可靠。FlexRay總線具有故障容限,可提供500 kbps~10 Mbps的確定數據傳輸速率和24位CRC(循環冗余)校驗碼。 FlexRay總線支持2×10 Mbps的數據速率,與CAN總線協議相比,可用的帶寬提高了10~40倍。總線速率的提高使電子設備可以快速從總線獲取信息,也可以快速將自身信息傳送到總線上的其他設備。微處理器和FlexRay總線控制器的數據通信一般采用串行方式、并行方式以及其他方式。并行接口方式是早期采用的高速數據傳輸方式,但以更高速率傳輸時則存在多種問題。由于數據和地址總線較多,使得接口復雜,PCB布線難度增大,在高速時鐘下每根數據線和地址線都要求盡量等長,否則可能產生數據和地址傳輸時相應位的紊亂,無法正確傳輸數據。串行方式硬件連接方便,內部最少只需數據收和數據發2根線,但傳輸速率較慢。 本文介紹一種微連接口MLI(MicroLink Interface)實現總線傳輸,使用FlexRay總線控制器CIC310及處理器TC1796。CIC310采集總線上各個節點的通信數據,并對總線負載和總線容量進行檢測和控制。TC1796將各個節點數據進行處理,他們之間采用微連接口MLI,實現高速數據傳輸,最快數據傳輸速率達到37.5 Mbps,完全滿足2×10 Mbps的總線數據速率。 1 FlexRay控制器CIC310 CIC310是英飛凌公司最近推出的FlexRay總線控制器,其內部結構如圖1所示。從圖中可以看出,CIC310總線控制器主要由ERay模塊、DMA模塊、時鐘管理模塊、中斷模塊、內存和數據處理以及數據接口模塊等組成。 圖1 CIC310內部功能框圖 CIC310有3種接口方式將數據傳輸到處理器,這3種方式分別為SSC(Synchronous Serial Channel,串行接口)方式、XMU(De?multiplexer 8/16 bit Parallel Interface,非復用的8/16位并行接口)方式和MLI方式。其中SSC為一般的串口連接方式,具有連接簡單和連接線少的特點,但數據傳輸速率較低;XMU接口為并口連接方式,數據傳輸速度比串口方式快很多,但連接線較多;MLI接口為專用接口方式,一般可以和專用車載控制器連接。英飛凌的TC1796具有和CIC310連接的MLI接口。 CIC310和總線接口有2個獨立的收發通道,每個通道的數據傳輸速度可達10 Mbps,片內ERay模塊主要負責總線數據的收發、總線和DMA模塊的數據交互、向外設產生各種中斷以及實現數據讀寫時鐘的管理等。E?Ray模塊一般經過數據濾波器,將一些廣播幀和總線上其他用戶的數據幀濾除后,將本用戶的數據幀傳輸到CIC310片內的DMA模塊。DMA模塊進行數據處理和數據校驗,可以采用事先設定的數據系數進行處理。 2 微處理器TC1796 TC1796是基于英飛凌公司TriCore處理器架構的32位微控制器,在一塊芯片中集成了微控制器、微處理器和數字信號處理器。具有2 MB的嵌入式Flash和多種創新的片上外設,如毫秒總線、快速模數轉換器、微連接口以及新穎的高性能三總線結構,提升了系統總體性能,同時降低了系統成本。其主要特點有: ◆ 具有4級流水及并行架構的高性能32位CPU,完全集成DSP處理能力,具有單精度浮點運算單元,工作頻率達150 MHz; ◆ 具有32位外設控制處理器,2 MB嵌入式程序Flash、128 KB數據Flash、16 KB仿真EEPROM、192 KB片上SRAM; ◆ 具有16通道DMA控制器,支持同步burst Flash訪問的32位外部總線接口單元,支持2×255個硬件中斷源; ◆ 具有2個毫秒總線接口、2個通用定時器陣列模塊、2個異步/同步串行通道、2個高速同步串行通道、2個高速微連接口、4個CAN節點、4通道快速模數轉換器、2個具有8/10/12位精度的16通道模數轉換器。 圖2 TC1796內部結構圖 TC1796的內部結構如圖2所示。內部主要由PMU(Program Memory Unit,程序存儲單元)、DMU(Data Memory Unit,數據存儲單元)、FPU(Floating Point Unit,浮點單元)、PMI(Program Memory Interface,程序存儲接口)、DMI(Data Memory Interface,數據存儲接口)、PCP(Peripheral Control Processor,片內外設控制處理器)、STM(System Timer,系統定時陣列)和PLL(Phase Locked Loop,鎖相環)等組成。外部接口包括ADC、FADC(快速ADC)、串口、JTAG(仿真口)、GPIO(通用I/O口)、ASC(異步串口)、CAN、MSC(Micro Second Channel,毫秒口)、MLI口等。 3 MLI接口 MLI接口是一種快速同步串行接口,可以在CPU不參與的情況下進行數據傳輸。圖3是MLI接口的典型連接框圖。 圖3 MLI連接框圖 圖3中,具有MLI接口的處理器稱為本地控制器,另一個則為遠程控制器。雙方都具有發送器和接收器。發送器和接收器之間進行物理連接。本地控制器初始化數據和交互參數,并負責控制所有的數據收發任務。每一次數據收發都必須由本地控制器發起,遠程控制器只是被動地響應本地控制器的命令,讀取或者發送數據。如果有3個以上的MLI接口進行連接,則只能有1個本地控制器,其他均設置成遠程控制器。本地控制器具有1個發送窗口,所有的發送數據均通過發送窗口寫入發送器并發送出去。本地控制器接收到數據后通過中斷方式通知CPU或者DMA進行讀取數據。遠程控制器具有1個遠程窗口,沒有發送窗口;但遠程控制器不能控制遠程窗口,遠程窗口和發送窗口一樣,都是由本地控制器操作。實際上,遠程控制器相當于一個完全被動的設備。遠程控制器收到數據將自動或者手動放到遠程窗口中,由遠程控制器的CPU或者DMA從相應地址讀取。當遠程控制器的CPU或者DMA需要發送數據時,本地控制器控制遠程窗口讀取相應地址的數據,并從發送器發送到本地控制器的接收器。 4 TC1796和CIC310的MLI接口連接 TC1796最多可以和4個CIC310的MLI接口連接,這樣1個處理器就可以連接4個總線控制器,從而控制8個總線節點并進行數據通信(每個CIC310控制2個總線節點),節省處理器成本。圖4為TC1796和2個CIC310的MLI接口連接。TC1796必須作為本地控制器,2個CIC310均為遠程控制器。 圖4 TC1796與2片CIC310連接 TC1796向CIC310發送數據的連接說明如下:MLI的接收器具有4個引腳,分別為RREADYA(接收數據準備好標志)、RVALIDA(接收數據有效標志)、RDATAA(接收數據)、RCLKA(接收時鐘);對應的發送器也具有TREADYA(發送數據準備好標志)、TVALIDA(發送數據有效標志)、TDATAA(發送數據)、TCLK(發送時鐘)。其中TDATA和TCLK引腳由TC1796輸出,連接到每個CIC310的RDATAA和RCLKA引腳,這樣每個CIC310都采用同一個時鐘和數據信號。TC179*個MLI接口具有4個發送數據準備好標志和發送數據有效標志,分別為TREADYA~TREADYD、TVALIDA~TVALIDD。將每個MLI的一對這樣的引腳連接到1個CIC310上,就完成對不同CIC310的選擇,從而區分出對哪個CIC310發送數據。從硬件連接可以看出,TC1796雖然可以和多個CIC310連接,但同時只能對1個CIC310發送數據。 TC1796接收CIC310的數據連接說明如下:TC1796的MLI接收器每個接口都具有獨立的4個引腳,RREADYA~RREADYD、RVALIDA~RVALIDD、RDATAA~RDATAD、RCLKA~RCLKAD,這樣每個接口正好和CIC310的發送器的4個引腳連接,可以同時接收4個CIC310的數據。在TC1796內部,將每個CIC310連接到不同的DMA中斷上,使用DMA進行數據讀取。 TC1796與多個CIC310進行連接,采用下行單向通信(TC1796向CIC310發送數據)、上行并行通信(CIC310向TC1796發送數據)的目的是減少總線負載。當總線節點有數據向處理器發送時,處理器總是及時讀取數據,避免總線重發數據,同時避免CIC310無法存儲突發的大量數據幀。當處理器需要向總線發送數據時,即使處理器需要同時向多個總線節點發送數據,依然采用單個節點輪流發送數據的方式,避免處理器同時將大量數據發送到總線,增加總線負載。一旦總線負載增加,數據傳輸誤碼率將大大增加,使得總線惡化。 |