《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于Infineon單片機的CAN網(wǎng)關(guān)研究
基于Infineon單片機的CAN網(wǎng)關(guān)研究
張素偉, 王志剛, 王 紅, 劉 穎
(河北工業(yè)大學 信息工程學院,, 天津300401)
摘要: 采用Infineon XC2000系列單片機實現(xiàn)CAN網(wǎng)關(guān)模塊,利用MFC編寫PC端網(wǎng)關(guān)配置軟件,。該系列單片機MultiCAN模塊可實現(xiàn)不同速率的獨立CAN網(wǎng)絡(luò)之間的數(shù)據(jù)接收,、存儲,、轉(zhuǎn)發(fā);能夠過濾不需要的CAN消息,,降低子網(wǎng)的負荷,。該網(wǎng)關(guān)模塊可以實現(xiàn)改變CAN網(wǎng)絡(luò)拓撲結(jié)構(gòu)、延長網(wǎng)絡(luò)通信距離,、增加節(jié)點數(shù)目等功能,。
Abstract:
Key words :

摘   要: 采用Infineon XC2000系列單片機實現(xiàn)CAN網(wǎng)關(guān)模塊,利用MFC編寫PC端網(wǎng)關(guān)配置軟件,。該系列單片機MultiCAN模塊可實現(xiàn)不同速率的獨立CAN網(wǎng)絡(luò)之間的數(shù)據(jù)接收,、存儲,、轉(zhuǎn)發(fā);能夠過濾不需要的CAN消息,,降低子網(wǎng)的負荷,。該網(wǎng)關(guān)模塊可以實現(xiàn)改變CAN網(wǎng)絡(luò)拓撲結(jié)構(gòu)、延長網(wǎng)絡(luò)通信距離,、增加節(jié)點數(shù)目等功能,。
關(guān)鍵詞: CAN網(wǎng)關(guān); Infineon單片機; 信息對象

    控制器局域網(wǎng)CAN(Controller Area Network)是德國Robert Bosch公司在20世紀80年代初為汽車業(yè)開發(fā)的一種車載專用串行數(shù)據(jù)通信總線,經(jīng)過多年的發(fā)展,,現(xiàn)在越來越多地被眾多汽車廠商所認可,。CAN不僅在汽車領(lǐng)域,而且在工業(yè)控制領(lǐng)域也得到了廣泛的應(yīng)用,,如工業(yè)現(xiàn)場控制,、小區(qū)安防、環(huán)境監(jiān)控等,。由于在具體工程應(yīng)用中往往需要連接2路或者多路CAN子網(wǎng),,因此,CAN網(wǎng)關(guān)是必不可少的,,是組網(wǎng)的關(guān)鍵設(shè)備之一,。
 在歐洲乃至世界上的很多汽車廠家,大部分的車內(nèi)電子控制單元大量使用原德國西門子半導(dǎo)體部門英飛凌科技(Infineon Technologies)的微控制器,特別是C166系列MCU,其優(yōu)良特性得到各大汽車廠家的公認[1],。Infineon XC2000系列MCU是英飛凌新推出的具有32位處理器性能的16位MCU,。XC2000家族又下分3個系列:XC2200、XC2300和XC2700,。XC2200主要針對車身網(wǎng)關(guān)的應(yīng)用,;XC2300主要針對汽車安全性能的應(yīng)用;XC2700則主要針對傳動系統(tǒng)的應(yīng)用,。XC2000系列相對XC166系列,其內(nèi)部的Flash和SRAM更大,、主頻更快、外設(shè)(如CAN節(jié)點)更多,。其中,,片內(nèi)Flash最大為768 KB,片內(nèi)SRAM最大為82 KB,,主頻最高為80 MHz,。
 本網(wǎng)關(guān)采用Infineon公司生產(chǎn)的XC2200單片機,利用該單片機MultiCAN模塊的網(wǎng)關(guān)(Gateway)功能實現(xiàn)CAN網(wǎng)關(guān)[2],。
1 CAN總線協(xié)議
 CAN總線是一種多主總線,支持分布式實時控制的串行數(shù)據(jù)通信網(wǎng)絡(luò),可以有效地構(gòu)成分布式實時監(jiān)測控制系統(tǒng),。CAN提供高達1 Mb/s的數(shù)據(jù)傳輸速率,這使實時控制變得非常容易,。另外,,硬件的錯誤檢定特性增強了CAN的抗電磁干擾能力,。CAN 協(xié)議支持4種不同的幀類型:數(shù)據(jù)幀、遠程幀,、出錯幀,、超載幀。
 在各種幀類型中,,最常用的是數(shù)據(jù)幀,。CAN標準幀類型的數(shù)據(jù)幀如圖1所示,這也是CiA推薦的CANopen數(shù)據(jù)幀格式。

2 CAN總線通信硬件實現(xiàn)
    通常,,1個完整的CAN節(jié)點應(yīng)該包括以下3個部分:微控制器(MCU),、CAN控制器、CAN收發(fā)器,。在本系統(tǒng)中,,由于XC2200單片機內(nèi)部集成了CAN控制器,因此在外圍電路設(shè)計上只需考慮CAN收發(fā)器[3],。  
    本系統(tǒng)CAN收發(fā)器采用PCA82C250,,PCA82C250與CAN總線的接口部分采用了安全和抗干擾措施。CANH和CANL與地之間并聯(lián)了2個30 pF的小電容,可以濾除總線的高頻干擾,。另外,在2根CAN總線接入端與地之間分別反接1個保護二極管,當CAN總線有較高的負電壓時,通過二極管的短路可起到一定的過壓保護作用,。PCA82C250的Rs腳上接有1個斜率電阻,電阻大小可根據(jù)總線通信速度適當調(diào)整,一般在16~140 kΩ之間。
    用光電隔離芯片6N137將CAN控制器和收發(fā)器PCA82C250隔離, 以便有效地增加通信距離和抗干擾能力,。CAN 總線物理層接口電路如圖2所示,隔離器把單片機的TXD,、RXD與PCA82C250的TXD,、RXD分別連接,然后把PCA82C250的CANH和CANL腳分別接到CAN 總線的CANH和CANL上,。


3 MultiCAN模塊及網(wǎng)關(guān)功能實現(xiàn)
3.1 MultiCAN模塊[4]

    本方案采用XC2267單片機,,該單片機MultiCAN模塊擁有5個CAN節(jié)點和128個信息對象。本方案只使用其中4個CAN節(jié)點,每個節(jié)點都連接獨立的CAN收發(fā)器,,構(gòu)成CAN通道,。在MultiCAN模塊中,每個CAN節(jié)點可以被獨立地配置,且每個節(jié)點所在的CAN總線波特率可以不同,。
    利用該模塊的Gateway模式可方便地實現(xiàn)CAN網(wǎng)關(guān)功能,,完成不同CAN總線上的數(shù)據(jù)交換[5]。這個過程無需CPU參與,,有效減輕了CPU負荷,,而使硬件承接了更多的工作量,改進了CAN網(wǎng)關(guān)設(shè)備的實時性能,。
  網(wǎng)關(guān)模式以信息對象為基礎(chǔ),,在該模式下,,數(shù)據(jù)在2個信息對象之間傳遞,從而實現(xiàn)信息對象所隸屬的CAN節(jié)點之間的數(shù)據(jù)交換,。利用信息對象之間的交換機制可以在任意2個CAN節(jié)點之間建立起網(wǎng)關(guān),通常需要指明信息對象的具體傳輸方向(接收或發(fā)送),。
    該單片機MultiCAN模塊擁有多達128個信息對象,所有的CAN節(jié)點共享有這些信息對象,每個對象都可獨立地分配給MultiCAN模塊內(nèi)任1個CAN節(jié)點,。每個CAN節(jié)點都有1個相應(yīng)的雙向信息對象列表,,通過這個列表來管理該節(jié)點的信息對象,每個CAN節(jié)點只能把CAN信息儲存在位于自身列表中的信息對象中,。
3.2  CAN網(wǎng)關(guān)軟件設(shè)計
3.2.1 PC端網(wǎng)關(guān)配置軟件

    利用MFC編寫PC端網(wǎng)關(guān)配置軟件,。PC機通過異步串行通信接口連接到網(wǎng)關(guān)設(shè)備,對其進行配置,,配置即時生效,。其配置界面如圖3所示。

    Visual C++提供了一種好用的ActiveX控件MSComm(Microsoft Communications Control)來支持應(yīng)用程序?qū)Υ诘脑L問,,在應(yīng)用程序中插入MSComm控件后,可以方便地通過PC機串口實現(xiàn)數(shù)據(jù)收發(fā),。
    在PC端網(wǎng)關(guān)配置軟件里配置串口、網(wǎng)關(guān)通道使能,、網(wǎng)關(guān)路由,、驗收過濾器等內(nèi)容,然后點擊“下載到網(wǎng)關(guān)設(shè)備”按鈕,,完成配置工作,。
3.2.2 MultiCAN模塊初始化
    在網(wǎng)關(guān)設(shè)備接收到來自串口的配置數(shù)據(jù)后,解析該配置數(shù)據(jù),,隨后啟動單片機MultiCAN模塊初始化,,主要包括CAN節(jié)點初始化和信息對象初始化。
    CAN節(jié)點初始化的主要任務(wù)有:將單片機對應(yīng)引腳定義為CAN輸入/輸出引腳,、定義通信波特率,,根據(jù)接收到的配置信息在信息對象列表內(nèi)增加信息對象。
    信息對象初始化的主要任務(wù)有:配置信息對象屬性,、ID,、幀類型、優(yōu)先級,、定義數(shù)據(jù)長度,、數(shù)據(jù)傳輸方向,同時需要配置屏蔽寄存器,以決定信息對象的濾波方案,。
    在初始化時,,需要注意對節(jié)點控制寄存器NCR的CCE和INIT位域的置位和復(fù)位設(shè)置,以及信息對象控制寄存器MOCTRn的MSGVAL位域的置位和復(fù)位設(shè)置。
3.3 網(wǎng)關(guān)數(shù)據(jù)交換過程
    接收數(shù)據(jù)幀的網(wǎng)關(guān)方稱為“源”,,通過網(wǎng)關(guān)發(fā)送數(shù)據(jù)幀的網(wǎng)關(guān)方,,稱為“目標”。網(wǎng)關(guān)數(shù)據(jù)交換過程如圖4所示,。


  首先經(jīng)過接收過濾后,,目標信息對象由源信息對象MOFGPRn寄存器內(nèi)CUR位域?qū)ぶ贰T葱畔ο驧OFCRn寄存器的位域IDC,、DLCC,、DATC分別控制是否復(fù)制所接收數(shù)據(jù)幀的ID、數(shù)據(jù)長度,、數(shù)據(jù)字節(jié)到目標信息對象中,,位域GDFS決定在完成數(shù)據(jù)復(fù)制過程之后,是否置位目標信息對象的發(fā)送請求標志,。到達源節(jié)點的匹配數(shù)據(jù)幀,,被自動復(fù)制到目標信息對象中。在復(fù)制數(shù)據(jù)幀之后,,目標信息對象的TXRQ,、NEWDAT、RXPND被置位,,網(wǎng)關(guān)源方接收的數(shù)據(jù)幀自動在目標方上發(fā)送,,完成網(wǎng)關(guān)數(shù)據(jù)交換過程。
3.4 CAN網(wǎng)關(guān)功能測試
  德國IXXAT公司的USB-to-CAN compact是一種經(jīng)濟型智能接口,,是標準的USB-CAN接口板卡,。配合CanAnalyser分析軟件便成為一種高效、便捷,、靈活的CAN應(yīng)用領(lǐng)域分析和開發(fā)工具,。
    本CAN網(wǎng)關(guān)設(shè)備應(yīng)用基于CANopen協(xié)議的某監(jiān)控系統(tǒng)。經(jīng)測試,,該網(wǎng)關(guān)設(shè)備可及時轉(zhuǎn)發(fā)CANopen協(xié)議的SDO,、PDO,、NMT,、Heartbeat消息等報文,網(wǎng)關(guān)通信狀況運行良好,設(shè)備符合CAN規(guī)范2.0A(11位CAN標識符)和2.0B(29位CAN標識符),,可用于各種不同的高層CAN協(xié)議:CANOpen,、SDS、J1939,、DeviceNet或其他定制的協(xié)議,。
    與其他類似網(wǎng)關(guān)設(shè)計不同[6],在網(wǎng)關(guān)某一通道接收CAN信息之后,,并沒有產(chǎn)生MCU中斷,,無需MCU做出路由判斷和轉(zhuǎn)發(fā)處理,。整個接收和轉(zhuǎn)發(fā)過程中,延時較短,,提高了網(wǎng)關(guān)運行速度和轉(zhuǎn)發(fā)速率,。
 本設(shè)計采用Infineon XC2000系列單片機,可實現(xiàn)多個CAN網(wǎng)絡(luò)的連接,。該網(wǎng)關(guān)具有4個通信端口,,可迅速增加節(jié)點數(shù)目。因此在提供自由的布線方式的同時,,也解除了系統(tǒng)總線上CAN收發(fā)器最大節(jié)點數(shù)驅(qū)動限制,。結(jié)合PC端網(wǎng)關(guān)配置軟件的使用,可以快速配置相應(yīng)的CAN路由功能和信息過濾器,。每個端口還具備檢測總線活動功能及總線故障指示燈,,方便觀察CAN總線網(wǎng)絡(luò)工作狀態(tài)。
參考文獻
[1]     吳志紅,朱元,王光宇.英飛凌16位單片機XC164CS的原理與基礎(chǔ)應(yīng)用[M].上海:同濟大學出版社,2006.
[2]     Infineon Technologies AG. XC2200 derivatives 16/32-bit single-chip microcontroller,user’s manual version 2.1[M].  2008.
[3]     吳志祥.基于Infineon單片機的CAN智能節(jié)點的研究與應(yīng)用[J].儀表技術(shù),2008(2):21-23.
[4]    Infineon Technologies AG. XC2000 easy kit board manual version3.0[M]. 2008.
[5]     Infineon Technologies AG.Ap29005_ MultiCAN CAN-gateway functionality witout CPU interaction[M]. 2007.
[6]     周建華,李剛炎,胡劍. 客車網(wǎng)絡(luò)控制中CAN/CAN網(wǎng)橋設(shè)計[J].微計算機信息,2006,22:4-6.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。