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