1 引言 控制器局部網CAN(ControllerAreaNetwork)是德國RobertBosch公司在20世紀80年代初為汽車業開發的一種車載專用串行數據通信總線,經過多年的發展,現在越來越多的被眾多汽車廠商所認可,并在包括BMW、Benz、VOLVO等汽車上使用。CAN由于其獨特的特性,不僅在汽車領域,而且在工業控制領域也得到了廣泛的運用,如工業現場控制、小區安防、環境監控等。由于在具體工程運用中,往往需要連接兩路CAN子網,因此CAN/CAN網橋是必不可少的,是組網的關鍵設備之一。本文在將客車網絡控制系統劃分為底盤和車身的兩個網絡控制子系統的基礎上,利用Philips公司的LPC2119微控制器,從硬件和軟件上設計了一個CAN/CAN網橋。 2 客車網絡控制中的CAN/CAN網橋 由于目前汽車電子應用的日益廣泛,CAN在轎車上應用日益廣泛,但是在國內的應用還不是很多,只有在某些高檔豪華的車型上才會采用,CAN在國內客車上的應用也僅限于由國外公司幫助實施單總線局部聯網。汽車電子技術的網絡化是我國汽車電子研究與應用的必然趨勢,CAN作為標準車載網絡技術,其在汽車網絡化應用的進程中將起著橋梁和紐帶的作用。由于客車中底盤部分涉及到整車行使的安全性,實時性要求和通信的信息量都明顯高于車身部分,因此本文在將客車網絡控制系統劃分為兩個子系統(底盤CAN和車身CAN)的基礎上,設計了連接兩路CAN的網橋。整個系統框架如圖1所示。 該網橋具有實現不同速率的CAN網段連接、不同網段的CAN報文過濾和轉發的功能。 使用CAN/CAN網橋的優點主要表現在以下幾方面: (1)過濾通信量。網橋接收一個子網的報文,只有當報文是發送給網橋所連的另一個子網時才轉發,否則不轉發; (2)擴大了通信距離; (3)提高了通信的最大節點數; (4)各網段可使用不同的通信速率; (5)提高了系統可靠性。當網絡出現故障時,一般只影響個別網段; (6)整個網絡性能得到改善。 當然,使用網橋也有一定的缺點,如: (1)由于網橋對接收的幀要先存儲后轉發,增加了延時; (2)CAN總線的MAC子層并沒有流量控制功能。當網絡上的負荷很重時,可能因網橋中緩沖區的存儲空間不夠而發生溢出,產生幀丟失的現象; (3)網橋若出現故障,對相鄰兩個子網的工作都將產生影響。 3 CAN/CAN網橋的硬件設計 3.1 LPC2119 CAN/CAN網橋是以ARM微控制器LPC2119為核心的軟硬件系統。LPC2119是Philips公司生產的一款基于支持實時仿真和跟蹤的16/32位ARM7TDMI-SMCU,帶有128KB嵌入的高速Flash存儲器。獨特的加速結構使32位代碼能夠在最大時鐘速率下運行。對代碼規模有嚴格控制的應用可使用16位Thumb模式將代碼規模降低超過30%,而性能的損失卻很小。LPC2119內部集成2個CAN控制器,為設計CAN/CAN網橋提供了可能。它的主要特性有:單個總線上的數據傳輸速率高達1Mb/s;32位寄存器和RAM訪問;兼容CAN2.0B;全局驗收濾波器可以識別所有的11位和29位Rx標識符;驗收濾波器為選擇的標準標識符提供FullCANstyle自動接收。 LPC2119內部集成的CAN控制器與Philips公司的SJA1000CAN控制器相比較大致相同,只是在驗收濾波這一環略有不同,這為習慣SJA1000的開發人員采用LPC2119提供了方便。在傳統的SJA1000中,接收過濾只能滿足一些規律性較高的ID篩選過濾,或個數較少的ID(一般小于10~15個)進行任意篩選過濾,難以實現更復雜的任意ID進行篩選過濾,這無疑增加了系統軟件設計及運行時負擔。LPC2000系列32位ARM微控制器中為所有CAN控制器提供了全局的接收標識符查詢功能。它包含一個512×32(2k字節)的RAM,通過軟件處理,可在RAM中存放1~5個標識符表格。整個AFRAM可容納1024個標準標識符或512個擴展標識符,或兩種類型混合的標識符。由于允許的表格范圍有2k字節,所以能容易地滿足設計復雜的ID接收過濾要求。 全局接收過濾的工作流程:當CAN控制器的接收端已接收到一個完整的標識符,它將通知接收過濾器。接收過濾器響應這個信號,并讀出控制器編號、標識符尺寸(11bit或29bit),然后,接收過濾器搜索AFRAM中的表格進行匹配,以決定接收或放棄這一幀信息。 3.2 基于LPC2119的CAN/CAN網橋的結構設計 CAN/CAN網橋的硬件框圖如圖2所示。LPC2119分別通過光電耦合電路和高速CAN總線收發器TJA1050與兩路總線相連。兩路CAN的連接方式基本相同。CAN總線驅動器都采用帶隔離的DC/DC模塊單獨供電。這樣,不僅實現了兩路CAN接口之間的電氣隔離,也實現了網橋與CAN總線的隔離。雖然這在一定程度上增加了網橋硬件的復雜性和成本,但卻是值得的。采取隔離措施可使故障局限在某一網段內,而不至于影響其它網段,既便于維護,又保證了系統設備的安全。采用光電耦合電路將CAN收發電路與LPC2119從物理上相隔離,避免了電氣上影響LPC2119的工作。 CAN/CAN網橋除了以上主要部分以外還加了LED指示、看門狗電路和復位電路。幾個LED主要指示兩路CAN的工作狀況以及出錯報警。LPC2119內置了看門狗電路,當由于程序跑飛或者其他原因導致系統工作不正常時將自動復位。復位電路采用MAX708SD來產生穩定的復位信號。 3.3 CAN/CAN網橋的軟件設計 CAN/CAN網橋的主要功能是實現兩路CAN之間的數據過濾及轉發,由于客車網絡控制系統中對通訊的實時性的要求,在進行軟件設計時要做到數據存儲和轉發的時間要求盡可能的短。為了達到這一要求,數據的接收采用向量中斷(IRQ)方式,而且由于底盤CAN控制子系統的數據通訊量明顯要高于車身CAN控制子系統,因此將連接底盤CAN控制子系統的CAN1接收優先級設置為最高,而連接車身CAN控制子系統的CAN2接收優先級次之。同時盡量精簡中斷服務程序,使系統的響應時間盡量的短。對應兩路CAN設置了兩個FIFO的環形接收緩沖區,由于CAN1的數據通訊量要高,因此CAN1的FIFO環形接收緩沖區比CAN2的大,這樣更適合實際情況。 CAN/CAN網橋的軟件設計主要包括:兩路CAN控制器的初始化,FIFO環形接收緩沖區的設置,兩路CAN控制器的全局驗收過濾器的設置,接收中斷服務程序,CAN發送程序,主監控程序。 CAN控制器的初始化流程如圖3所示。其中全局驗收過濾器的配置是一個難點,也是區別于SJA1000獨立CAN控制器的一個地方。有5個地址寄存器用來指向驗收過濾器RAM中的表格:fullCAN標準地址、標準單個地址、標準地址范圍、擴展單個地址和擴展地址范圍。這些表格在存儲器中必須是連續的。后4個表格的起始地址分別是各自相鄰的前一個表格的終止地址。擴展地址范圍表格的終止地址在表格終止寄存器中給出。如果一個表格的起始地址等于下一個表格的起始地址或表格終止寄存器的值,則該表格為空。 FIFO環形接收緩沖區中設置一個發送指針、一個接收指針和當前數據幀數frameCount,當frameCount為0時表明FIFO環形接收緩沖區是空的。 接收中斷服務程序將接收到的數據放入對應的FIFO環形接收緩沖區中并且修改接收指針和當前數據幀數frameCount。 主監控程序負責監控兩路CAN的FIFO環形接收緩沖區中是否有數據,如果其中一路CAN的FIFO環形接收緩沖區中有數據則向另一路CAN發送數據。主監控程序不斷查詢兩路CAN的FIFO環形接收緩沖區中的當前數據幀數frameCount標志,如果非零立即向另一路發送數據,并且在子程序CAN1SendToCAN2()和CAN2SendToCAN1()中修改發送指針和當前數據幀數。主監控程序流程如圖4所示。 4 總結 本文在LPC2119的基礎上設計了一個CAN/CAN網橋,并從硬件和軟件的角度論述了設計過程。作者采用廣州周立功單片機發展有限公司的CANalyst-II和USBCAN-II分別模擬客車底盤CAN和車身CAN對網橋進行了大量數據的反復測試,在向兩路CAN連續不間斷發送100000幀數據的情況下能夠準確的轉發,說明網橋工作可靠。下一步的研究目標將在網橋上移植實時多任務操作系統μC/OS-II來進一步提高網橋的實時性能。 |