CAN總線技術(shù)及其在汽車儀表中的應用
0 引言
控制局域網(wǎng)CAN (controllerareanetwork)是國際上應用最廣泛的現(xiàn)場總線之一,是德國Bosch公司為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種通訊協(xié)議,它作為汽車環(huán)境中的微控制器通訊,在車載各電子控制裝置ECU之間交換信息,形成汽車電子控制網(wǎng)絡。比如:發(fā)動機管理系統(tǒng)、變速箱控制器、儀表裝備、電子主干系統(tǒng)中,均嵌入CAN控制裝置。CAN是一種多主方式的串行通訊總線,基本設(shè)計規(guī)范要求有高的位速率,高抗電磁干擾性,而且能夠檢測出產(chǎn)生的任何錯誤。當信號傳輸距離達到10Km時,CAN仍可提供高達50 kbit/s的數(shù)據(jù)傳輸速率。它是一種有效支持分布式控制或?qū)崟r控制的串行通訊網(wǎng)絡。CAN的應用范圍遍及從高速網(wǎng)絡到低成本的多線路網(wǎng)絡。在自動化電子領(lǐng)域的汽車發(fā)動機控制部件、傳感器、抗滑系統(tǒng)等應用中,CAN的位速率可高達1 Mbps。CAN網(wǎng)絡具有反映快,可靠度高的特性,應用于要求實時處理的場合,例如汽車剎車防鎖死系統(tǒng)安全氣囊等。今天此項通信協(xié)議已得到廣泛應用,成為現(xiàn)代汽車設(shè)計中必須采用的裝置,奔馳、寶馬、大眾、沃爾沃及雷諾汽車都將CAN作為控制器聯(lián)網(wǎng)的手段。
1 CAN總線的特點及通訊協(xié)議
1.1 CAN總線的特點
CAN總線是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡。其通訊介質(zhì)可以是雙絞線、同軸電纜或光纖。在汽車發(fā)動機控制部件、傳感器等應用中,總線的位速率最大可達1Mbit/s。CAN總線具有以下主要特性:
a. 無破壞性的基于優(yōu)先權(quán)競爭的總線仲裁
b. 可借助接收濾波的多地址幀傳送
c. 具有錯誤檢測與出錯幀自動重發(fā)功能
d. 數(shù)據(jù)傳送方式可分為數(shù)據(jù)廣播式和遠程數(shù)據(jù)請求式
1.2 CAN總線幀格式[1]
CAN總線通信協(xié)議包括CAN2.0A和CAN2.0B兩種,它們的幀格式如下:
?。?)CAN2.0A通信協(xié)議規(guī)定了4種不同的幀格式:
數(shù)據(jù)幀 用于節(jié)點間傳遞數(shù)據(jù),是網(wǎng)絡信息的主體,其幀格式依次包括: 幀起始、仲裁場、控制場、數(shù)據(jù)場、CRC場、ACK場和幀結(jié)束。其中數(shù)據(jù)段長度可編程0~8個字節(jié)。
遠程幀 由在線單元發(fā)送,用于請求發(fā)送具有相同標識符的數(shù)據(jù)幀,其幀格式與數(shù)據(jù)幀基本相同,但沒有數(shù)據(jù)場。]
出錯幀 出錯幀是檢測總線出錯的一個信號標志,由兩個不同的場構(gòu)成。第一個場由來自不同節(jié)點的錯誤標志疊加,第二個場為錯誤界定符。CAN協(xié)議采用CRC檢驗并可提供相應的錯誤處理功能,保證數(shù)據(jù)通訊的可靠性。
超載幀 由超載標識和超載界定符組成,表明邏輯鏈路控制層要求的內(nèi)部超載狀態(tài),并將由媒體訪問控制層的一些出錯條件而被啟動發(fā)送。用于擴展幀序列的延遲時間。
?。?)CAN2.0B通信協(xié)議分為兩種幀格式:
?、?標準幀
標準幀信息為11個字節(jié),包括兩部分:信息和數(shù)據(jù)部分。前3個字節(jié)為信息部分。
<1>字節(jié)1為幀信息。第7位(FF)表示幀格式,在標準幀中,F(xiàn)F=0;第6位(RTR) 表示幀的類型,RTR=0表示為數(shù)據(jù)幀,RTR=1表示為遠程幀;DLC表示在數(shù)據(jù)幀時實際的數(shù)據(jù)長度。
<2>字節(jié)2、3為報文識別碼,11位有效。
<3>字節(jié)4~11為數(shù)據(jù)幀的實際數(shù)據(jù),遠程幀時無效。
?、?擴展幀
<1>擴展幀信息為13個字節(jié),包括兩部分,信息和數(shù)據(jù)部分。前5個字節(jié)為信息部分。字節(jié)1為幀信息。第7位(FF)表示幀格式,在擴展幀中,F(xiàn)F = 1;第6位(RTR)表示幀的類型,RTR=0表示為數(shù)據(jù)幀,RTR=1表示為遠程幀;DLC表示在數(shù)據(jù)幀時實際的數(shù)據(jù)長度。
<2>字節(jié)2~5為報文識別碼,其高29位有效。
<3>字節(jié)6~13為數(shù)據(jù)幀的實際數(shù)據(jù),遠程幀時無效。
2 系統(tǒng)總體方案設(shè)計
該系統(tǒng)以摩托羅拉16位單片機MC9S12DP256為中央控制器,并含有CAN通信模塊、LIN通信模塊、數(shù)據(jù)采集模塊及數(shù)據(jù)存儲模塊等。發(fā)動機及底盤部分通過CAN總線與中央控制器相連,儀表板部分及車身模塊通過LIN總線與中央控制器相連,本文重點介紹的是CAN通信模塊的設(shè)計。
2.1 CAN通信模塊硬件設(shè)計
中央控制器MC9S12DP256內(nèi)部帶有5路CAN控制器,msCAN是Motorola Scaleable CAN的縮寫,而msCAN12模塊則是在MC9S12系列MCU上的具體實現(xiàn)。它服從CAN2.0A/B 協(xié)議,集成了除收發(fā)器外CAN總線控制器的所有功能。
msCAN12基本特點如下[2]:
?。?) 模塊化結(jié)構(gòu)
(2) 實現(xiàn)了CAN2.0A/B協(xié)議,支持標準和擴展幀格式
?。?) 支持遠程請求幀
(4) 雙緩沖接收存儲方案
?。?) 帶有本地優(yōu)先級排隊機制的三緩沖區(qū)發(fā)送存儲方案
(6) 可屏蔽、可重組標識符驗收過濾器
?。?) 內(nèi)置低通濾波器的可編程喚醒功能
?。?) 可編程環(huán)路檢測模式支持模塊自檢
?。?) 時鐘源可程控選擇CPU總線時鐘或晶體振蕩器時鐘
采用msCAN12的CAN總線系統(tǒng)如圖1所示:
圖1 含有MC9S12及其他節(jié)點的典型CAN總線網(wǎng)絡系統(tǒng)
CAN收發(fā)器采用摩托羅拉的CAN通信物理接口芯片MC33388,它的主要特點是:
● 靜態(tài)電流低至15uA;
● 波特率范圍為10~125 kbps;
● 發(fā)生總線錯誤時可自動調(diào)整至單線模式,錯誤消失后可自動恢復正常狀態(tài);
● 支持單總線傳輸模式;
● 總線對地、電源具有短路保護功能;
● 具有總線驅(qū)動器過熱保護功能;
● 支持無遮蔽雙絞線傳輸;
● 無功節(jié)點不影響總線狀態(tài);
● 工作溫度范圍為-40℃~125℃。
MC33388與MCU應用電路如圖2所示:
圖2 MC33388與MCU應用電路
2.2 CAN數(shù)據(jù)通信接口模塊軟件設(shè)計
通信接口模塊程序主要包括三部分:初始化子程序、發(fā)送子程序和接收子程序。初始化程序主要是通過CAN控制器控制段中的寄存器寫入控制字,從而確定CAN控制器的工作方式等。有三種方式進入初始化程序:一是上電復位,二是硬件復位;三是軟件復位,即在運行期間通過給CAN控制器發(fā)一個復位請求,置復位請求位為1。在復位期間必須初始化的寄存器有控制寄存器CTL、發(fā)送控制寄存器TCR、接收中斷允許寄存器RIER、總線定時寄存器BTR、驗收控制寄存器IDAC、驗收寄存器IDAR、驗收屏蔽寄存器DMR等。
主節(jié)點CAN數(shù)據(jù)接收采用中斷方式,MCU內(nèi)部的CAN控制器具有雙緩沖接收結(jié)構(gòu),對總線數(shù)據(jù)具有一定的緩存能力,通常系統(tǒng)采用主程序查詢方式對接收數(shù)據(jù)進行處理,并用廣播方式發(fā)送,對特殊數(shù)據(jù)采用遠程幀申請方式,這樣更有利于程序?qū)Χ鄠€任務的結(jié)構(gòu)化管理,其程序流程圖如圖3所示。
CAN總線以報文為單位進行數(shù)據(jù)傳輸,節(jié)點對總線的訪問采取位仲裁方式。報文起始發(fā)送節(jié)點標識符可分為功能標識符和地址標識符。CAN協(xié)議的最大特點是打破了傳統(tǒng)的節(jié)點地址編碼方式,而擴展了對通訊數(shù)據(jù)進行編碼的方式。采用這種方式可使不同的節(jié)點同時接收到相同的數(shù)據(jù)??偩€采用CAN2.0B協(xié)議,數(shù)據(jù)標識符用29位二進制表示,即可定義229個不同的數(shù)據(jù)類型,即使對未來更復雜的汽車控制網(wǎng)絡其容量也足夠了。標識符的值越小,幀數(shù)據(jù)的優(yōu)先級越高。通過數(shù)據(jù)鏈路控制,每個接收器完成幀接收濾波確定此幀數(shù)據(jù)是否有效。CAN控制器監(jiān)聽總線電平?jīng)Q定發(fā)送接收是否有效,實際汽車應用中一般采用不冗余的通訊線路,而CAN協(xié)議提供強大的出錯診斷機制,在保證數(shù)據(jù)通訊的可靠性方面起了重要作用。
圖3 CAN通信程序流程圖
3 結(jié)束語
CAN總線技術(shù),是工業(yè)控制與計算機網(wǎng)絡兩者邊緣的產(chǎn)物。無論是從網(wǎng)絡的結(jié)構(gòu)、協(xié)議、實時性、還是適應性、靈活性、可靠性乃至成本等,工業(yè)控制的底層都有它的特殊性,特別是汽車工業(yè)中,要傳輸?shù)男畔级绦。髮崟r性很強、可靠性高,CAN總線協(xié)議作為一種簡單而可靠的通訊協(xié)議,在車用電控單元和儀表上有很好的應用前景。本文介紹的CAN接口電路與通訊軟件結(jié)構(gòu)對其他微處理器系統(tǒng)來說,加以適當?shù)男薷囊彩沁m用的。由于在實際的車用電氣環(huán)境中,需要考慮溫度、電磁干擾、電源等因素,設(shè)計時應考慮軟、硬件的抗干擾能力。