<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設計應用 > 汽車(chē)CAN總線(xiàn)詳解

汽車(chē)CAN總線(xiàn)詳解

作者: 時(shí)間:2025-03-27 來(lái)源:英飛凌汽車(chē)電子生態(tài)圈 收藏

CAN(Controller Area Network)總線(xiàn)協(xié)議是由 BOSCH 發(fā)明的一種基于消息廣播模式的串行通信總線(xiàn),它起初用于實(shí)現汽車(chē)內ECU之間可靠的通信,后因其簡(jiǎn)單實(shí)用可靠等特點(diǎn),而廣泛應用于工業(yè)自動(dòng)化、船舶、醫療等其它領(lǐng)域。相比于其它網(wǎng)絡(luò )類(lèi)型,如局域網(wǎng)(LAN, Local Area Network)、廣域網(wǎng)(WAN, Wide Area Network)和個(gè)人網(wǎng)(PAN, Personal Area Network)等,CAN 更加適合應用于現場(chǎng)控制領(lǐng)域,因此得名。

本文引用地址:http://dyxdggzs.com/article/202503/468732.htm

是一種多主控(Multi-Master)的總線(xiàn)系統,它不同于USB或以太網(wǎng)等傳統總線(xiàn)系統是在總線(xiàn)控制器的協(xié)調下,實(shí)現A節點(diǎn)到B節點(diǎn)大量數據的傳輸,CAN網(wǎng)絡(luò )的消息是廣播式的,亦即在同一時(shí)刻網(wǎng)絡(luò )上所有節點(diǎn)偵測的數據是一致的,因此比較適合傳輸諸如控制、溫度、轉速等短消息。

CAN起初由BOSCH提出,后經(jīng)ISO組織確認為國際標準,根據特性差異又分不同子標準。CAN國際標準只涉及到 OSI(開(kāi)放式通信系統參考模型 )的物理層和數據鏈路層。上層協(xié)議是在CAN標準基礎上定義的應用層,市場(chǎng)上有不同的應用層標準。

 

發(fā)展歷史

  • 1983年,BOSCH開(kāi)始著(zhù)手開(kāi)發(fā);

  • 1986年,在SAE會(huì )議上,正式發(fā)布;

  • 1987年,Intel和Philips推出第一款CAN控制器芯片;

  • 1991年,奔馳 500E 是世界上第一款基于CAN總線(xiàn)系統的量產(chǎn)車(chē)型;

  • 1991年,Bosch發(fā)布CAN 2.0標準,分 CAN 2.0A (11位標識符)和 CAN 2.0B (29位標識符);

  • 1993年,ISO發(fā)布CAN總線(xiàn)標準(ISO 11898),隨后該標準主要有三部分:

  •  ISO 11898-1:數據鏈路層協(xié)議

  •   ISO 11898-2:高速CAN總線(xiàn)物理層協(xié)議

  •  ISO 11898-3:低速CAN總線(xiàn)物理層協(xié)議

注意:ISO 11898-2和ISO 11898-3物理層協(xié)議不屬于 BOSCH CAN 2.0標準。

  • 2012年,BOSCH發(fā)布 CAN FD 1.0 標準(CAN with Flexible Data-Rate),CAN FD定義了在仲裁后確使用不同的數據幀結構,從而達到最高 12Mbps 數據傳輸速率。CAN FD與CAN 2.0協(xié)議兼容,可以與傳統的CAN 2.0設備共存于同樣的網(wǎng)絡(luò )

 

標準化

CAN標準分為底層標準(物理層和數據鏈路層)和上層標準(應用層)兩大類(lèi)。CAN底層標準主要是 ISO 11898 系列的國際標準,也就是說(shuō)不同廠(chǎng)商在CAN總線(xiàn)的物理層和數據鏈路層定義基本相同;而上層標準,涉及到例如流控制、設備尋址和大數據塊傳輸控制等,不同應用領(lǐng)域或制造商會(huì )有不同的做法,沒(méi)有統一的國際標準。

 

底層標準

CAN底層標準涵蓋OSI模型中的物理層和數據鏈路層,底層標準包括:

  • ISO 11898-1: 2015 定義CAN總線(xiàn)的數據鏈路層(DLL)和電氣信號標準,描述CAN總線(xiàn)的基本架構,定義不同CAN總線(xiàn)設備在數據鏈路層通信方式,詳細說(shuō)明邏輯鏈接控制(LLC)和介質(zhì)訪(fǎng)問(wèn)控制(MAC)子層部分;

  •  ISO 11898-2: 2003 定義高速CAN總線(xiàn)(HS-CAN)物理層標準,最高數據傳輸速率 1Mbps ,應用為兩線(xiàn)平衡式信號(CAN_H, CAN_L),HS CAN是汽車(chē)動(dòng)力和工業(yè)控制網(wǎng)絡(luò )中應用最為廣泛的物理層協(xié)議;

  • ISO 11898-3: 2006 定義低速CAN總線(xiàn)(LS-CAN, Fault-Tolerant CAN)物理層標準,數據傳輸速率在 40Kbps ~ 125Kbps 。Fault-Tolerant是指總線(xiàn)上一根傳輸信號失效時(shí),依靠另外的單根信號也可以通信,LS CAN主要應用于汽車(chē)車(chē)身電控單元之間通信;

  • ISO 11898-4: 2004 定義CAN總線(xiàn)中的時(shí)間觸發(fā)機制(Time-Triggered CAN, TTCAN),定義與ISO 11898-1 配合的幀同步實(shí)體,實(shí)現汽車(chē)ECU之間基于時(shí)間觸發(fā)的通信方式。注意,ISO 11898-1 是基于事件驅動(dòng)(Event-Driven)的通信,它對于高負荷總線(xiàn)上,尤其是低優(yōu)先級的消息會(huì )造成較大的延遲,而基于時(shí)間觸發(fā)的ISO 11898-4 標準的初衷也正是為解決該問(wèn)題,確保CAN總線(xiàn)上可靠的消息傳輸;

  • ISO 11898-5: 2007 對ISO 11898-2高速CAN總線(xiàn)的補充,并參照ISO 8802-2,定義在總線(xiàn)閑置時(shí)的節電特性;

  • ISO 11898-6: 2013 對ISO 11898-2 和 ISO 11898-5 的補充,并參照ISO 8802-2,定義使用可配置的幀實(shí)現選擇性喚醒總線(xiàn)的機制;

  • ISO 16845-1: 2004 定義測試符合ISO 11898-1標準CAN應用的方法和條件;

  • ISO 16845-2: 2014 定義包括特定功能下可以選擇性喚醒總線(xiàn)的CAN收發(fā)器的測試實(shí)例和測試要求,也稱(chēng)為CAN總線(xiàn)的一致性測試

 


CAN總線(xiàn)底層標準與ISO/OSI模型的對應關(guān)系,如圖1所示。對于媒體專(zhuān)用接口(Medium Dependent Interface, MDI),沒(méi)有統一的國際標準。CiA DS-102 (CiA: CAN in Automation )僅定義使用專(zhuān)用連接器(DB9),并對PIN定義作出一定規范。

P1.png圖1. CAN總線(xiàn)標準

 

 

 

上層標準

雖然底層標準相同,不同應用領(lǐng)域和組織會(huì )制定不同的上層標準。有的廠(chǎng)商開(kāi)發(fā)并推廣其應用層標準,在某些領(lǐng)域得以廣泛應用。對于汽車(chē)行業(yè)來(lái)說(shuō),幾乎每家廠(chǎng)商都有自己的CAN上層標準。比較流行的有工業(yè)自動(dòng)化領(lǐng)域 CiA 的 CANopen ,Rockwell 的 DeviceNet;嵌入式控制領(lǐng)域 Kvaser 的 CAN Kingdom;智能設備控制 Honeywell 的 SDS;汽車(chē)診斷 ISO 14229 定義的 UDS,和中重型汽車(chē)CAN總線(xiàn)標準 SAE J1939 。如表1示。

Sheet 1.png

 表1. CAN上層標準舉例

 

 

總線(xiàn)特點(diǎn)

  • 符合OSI開(kāi)放式通信系統參考模型;

  •  兩線(xiàn)式總線(xiàn)結構,電氣信號為差分式;

  • 多主控制。在總線(xiàn)空閑時(shí),所有的單元都可開(kāi)始發(fā)送消息,最先訪(fǎng)問(wèn)總線(xiàn)的單元可獲得發(fā)送權;

  • 多個(gè)單元時(shí)開(kāi)始發(fā)送時(shí),發(fā)送高優(yōu)先級 ID 消息的單元可獲得發(fā)送權;

  •  消息報文不包含源地址或者目標地址,僅通過(guò)標識符表明消息功能和優(yōu)先級;

  • 基于固定消息格式的廣播式總線(xiàn)系統,短幀結構;

  • 事件觸發(fā)型。只有當有消息要發(fā)送時(shí),節點(diǎn)才向總線(xiàn)上廣播消息;

  • 可以通過(guò)發(fā)送遠程幀請求其它節點(diǎn)發(fā)送數據;

  • 消息數據長(cháng)度 0~8 Byte;

  • 錯誤檢測功能。所有節點(diǎn)均可檢測錯誤,檢測處錯誤的單元會(huì )立即通知其它所有單元;

  •  發(fā)送消息出錯后,節點(diǎn)會(huì )自動(dòng)重發(fā);

  •  故障限制。節點(diǎn)控制器可以判斷錯誤是暫時(shí)的數據錯誤還是持續性錯誤,當總線(xiàn)上發(fā)生持續數據錯誤時(shí),控制器可將節點(diǎn)從總線(xiàn)上隔離;

  •  通信介質(zhì)可采用雙絞線(xiàn)、同軸電纜和光導纖維,一般使用最便宜的雙絞線(xiàn);

  •  理論上,CAN總線(xiàn)用單根信號線(xiàn)就可以通信,但還是配備了第二根導線(xiàn),第二根導線(xiàn)與第一根導線(xiàn)信號為差分關(guān)系,可以有效抑制電磁干擾;

  • 在40米線(xiàn)纜條件下,最高數據傳輸速率 1Mbps;

  • 總線(xiàn)上可同時(shí)連接多個(gè)節點(diǎn),可連接節點(diǎn)總數理論上是沒(méi)有限制的,但實(shí)際可連接節點(diǎn)數受總線(xiàn)上時(shí)間延遲及電氣負載的限制;

  •  未定義標準連接器,但經(jīng)常用9腳 DSUB
     

應用

在當今汽車(chē)應用領(lǐng)域,車(chē)內電控單元(Electrical Control Unit, ECU)可能多達 70 個(gè),除了引擎控制單元(Engine Control Unit, ECU )外,還存在傳動(dòng)控制、安全氣囊、ABS、巡航控制、EPS、音響系統、門(mén)窗控制和電池管理等模塊,雖然某些模塊是單一的子系統,但是模塊之間的互連依然非常重要。例如,有的子系統需要控制執行器和接收傳感器反饋,CAN總線(xiàn)可以滿(mǎn)足這些子系統數據傳輸的需求。汽車(chē)內子模塊的總線(xiàn)互連架構使得軟件可以更輕易地實(shí)現安全、經(jīng)濟和便利等新特性,相比傳統汽車(chē)網(wǎng)絡(luò )架構中模塊單元直接連接更加經(jīng)濟。 CAN總線(xiàn)實(shí)現汽車(chē)內互連系統由傳統的點(diǎn)對點(diǎn)互連向總線(xiàn)式系統的進(jìn)化,大大降低汽車(chē)內電子系統布線(xiàn)的復雜度,如圖2所示。

P2.png

 P3.png

 

圖2. 傳統網(wǎng)絡(luò )結構 VS 總線(xiàn)式結構

在 VW 的定義(SSP 269)中,根據應用范圍將車(chē)內CAN總線(xiàn)分為三類(lèi):

  • Convenience CAN /舒適CAN網(wǎng)絡(luò ),主要控制車(chē)門(mén)窗、空調等設備,最高傳輸速度100 kbps

  • Powertrain CAN /動(dòng)力CAN網(wǎng)絡(luò ),主要控制動(dòng)力相關(guān)設備,如發(fā)動(dòng)機、制動(dòng)、ABS等,最高傳輸速度500 kbps

  • Infotainment CAN /信息娛樂(lè )CAN網(wǎng)絡(luò ),主要控制收音機、電話(huà)和導航等設備,最高傳輸速度100 kbps

根據數據傳輸速度不同CAN總線(xiàn)分兩類(lèi):高速CAN(ISO 11898-2)和低速CAN(ISO 11898-3)。

高速CAN(按BOSCH說(shuō)法,也叫CAN-C),數據速率在 125kbps ~ 1Mbps,應用在實(shí)時(shí)性要求高的節點(diǎn),如引擎管理單元、電子傳動(dòng)控制、ESP和儀表盤(pán)等;低速CAN(CAN-B),數據速率在 5kbps ~ 125kbps,應用在實(shí)時(shí)性要求低的節點(diǎn),主要在舒適和娛樂(lè )領(lǐng)域,如空調控制、座椅調節、燈光、視鏡調整等,這些節點(diǎn)對實(shí)時(shí)性要求不高,而且分布較為分散,線(xiàn)纜較易收到損壞,低速CAN的傳輸速度即可滿(mǎn)足要求,而且單根線(xiàn)纜也可以工作,很好地適應了以上需求。不同速度類(lèi)型的CAN總線(xiàn)設備不能直接連在同一路總線(xiàn)上,它們之間需要通過(guò)網(wǎng)關(guān)隔離。

CAN總線(xiàn)在汽車(chē)診斷領(lǐng)域的應用也非常廣泛,ECU直接掛載在總線(xiàn)上,可以很快地獲取診斷所需的信息。傳統的汽車(chē)診斷接口(如KWP2000)應用逐漸減少。

圖2a示意了汽車(chē)內總線(xiàn)系統及電子設備的邏輯分布,總線(xiàn)系統包括 CAN、LIN、FlexRay 和 MOST 。注意,車(chē)載以太網(wǎng)在圖中未列出,但它的應用日漸廣泛。以上不同類(lèi)型和速度的總線(xiàn),通過(guò)網(wǎng)關(guān) Gateway 模塊相互通信。(圖片來(lái)源:鏈接)

P4.png

 圖2a. 汽車(chē)內總線(xiàn)系統舉例

 

局限性

  • 由于CAN總線(xiàn)仲裁的特點(diǎn),即使往總線(xiàn)上周期性發(fā)送消息,也不能保證節點(diǎn)可以確定(周期) 地收到消息,CAN不適合對時(shí)間特別敏感的應用;

  •  最高傳輸速率只有 1Mbps ,對于汽車(chē)自動(dòng)駕駛應用的數據傳輸,或者視頻音頻傳輸帶寬不足。為解決這方面的需求,CAN FD 速度有所上升,另外還有 MOST、LVDS 和以太網(wǎng)等;

  • 對于簡(jiǎn)單的應用,高成本的CAN總線(xiàn)雖然可靠性很高,但有點(diǎn)浪費。LIN 總線(xiàn)相比CAN具有成本優(yōu)勢,更適合應用于車(chē)窗座椅空調等設備
     

電路基礎

硬件拓撲

連接在CAN總線(xiàn)上的設備叫做節點(diǎn)設備(CAN Node),CAN網(wǎng)絡(luò )的拓撲一般為線(xiàn)型。線(xiàn)束最常用為非屏蔽雙絞線(xiàn)(UTP),線(xiàn)上傳輸為對稱(chēng)的電平信號(差分)。圖3示為CAN總線(xiàn)網(wǎng)絡(luò )示意圖,節點(diǎn)主要包括Host、控制器和收發(fā)器三部分。Host常集成有CAN控制器,CAN控制器負責處理協(xié)議相關(guān)功能,以減輕Host的負擔。CAN收發(fā)器將控制器連接到傳輸媒介。通??刂破骱涂偩€(xiàn)收發(fā)器通過(guò)光耦或磁耦隔離,這樣即使總線(xiàn)上過(guò)壓,損壞收發(fā)器,控制器和Host設備也可以得到保護。

P5.png

 圖3. CAN總線(xiàn)節點(diǎn)示意圖

 

高速CAN總線(xiàn)最高信號傳輸速率為1Mbps,支持最長(cháng)距離 40m。ISO 11898-2 規定要求在高速CAN總線(xiàn)的兩端安裝端接電阻(RL)以消除反射,而低速CAN最高速度只有 125Kbps,因此 ISO 11898-3 沒(méi)有要求端接。ISO 11898 規定的CAN總線(xiàn)上最多 32 個(gè)節點(diǎn)。實(shí)際應用中要考慮到CAN總線(xiàn)收發(fā)器的性能,以及工作的CAN網(wǎng)絡(luò )是高速CAN還是低速CAN。在傳輸距離方面,由于距離越大,信號時(shí)延也越大,為確保消息的正確采樣,總線(xiàn)上的信號速率相應也得下降,表2列出推薦的信號速率與距離的關(guān)系。

P6.png

 表2. CAN總線(xiàn)長(cháng)度與信號速率關(guān)系(推薦)

 

 

收發(fā)器

CAN收發(fā)器包括 CANH 和 CANL 兩根信號,CANH和CANL信號采用差分電平,這樣可以取得更好的電磁兼容效果。CAN總線(xiàn)物理傳輸媒介只需要兩根線(xiàn)。

前面的標準部分有介紹,CAN總線(xiàn)分高速CAN和低速CAN,收發(fā)器因之也分為高速CAN收發(fā)器(1Mbps)和低速CAN收發(fā)器(125Kbps)。低速CAN也叫 Fault Tolerant CAN ,指的是即使總線(xiàn)上一根線(xiàn)失效,總線(xiàn)依然可以通信。圖4示例高速CAN收發(fā)器的基本電路結構。當兩個(gè)晶體管都關(guān)斷時(shí),CANH和CANL上電壓相同,且都為 0.5*VCC ;而當兩個(gè)晶體管都打開(kāi)時(shí),CANH 和 CANL 上即存在一定的壓差,且壓差與負載電阻值相關(guān)。ISO 11898-2 要求此時(shí) CANH 和 CANL 壓差在 2V 左右。

CAN收發(fā)器的特性包括非常低的電磁輻射和很強的抗擊共模噪聲的能力。另外,CAN收發(fā)器可以提供高達 8KV 的ESD保護,在電路設計中可以在收發(fā)器附近增加共模電感以進(jìn)一步降低電磁輻射(圖5)。

P7.png

 

 

 

圖4. CAN總線(xiàn)收發(fā)器(MCP2551)

P8.png

 圖5. 共模電感降低輻射

 

 

信號電平

高速CAN和低速CAN總線(xiàn)在物理層信號電平上定義有所不同。圖6和圖7表示高速和低速CAN總線(xiàn)上信號電平與總線(xiàn)邏輯的對應關(guān)系。

高速CAN,定義 CANH 和 CANL 電壓相同(CANH = CANL = 2.5V)時(shí)為邏輯“1”,CANH和CANL 電壓相差 2V(CANH = 3.5V, CANL = 1.5V) 時(shí)為邏輯“0”。高速CAN收發(fā)器在共模電壓范圍內(-12V ~ 12V),將CANH和CANL電壓相差大于 0.9V 解釋為顯性狀態(tài)(Dominant),而將CANH和CANL電壓相差小于 0.5V 解釋為為隱性狀態(tài)(Recessive)。收發(fā)器內部有遲滯電路可以降低干擾。

低速CAN,定義CANH和CANL電壓相差 5V (CANH = 0V, CANL = 5V)時(shí)為邏輯“1”,相差 2.2V (CANH = 3.6V, CANL = 1.4V)時(shí)為邏輯“0”。

在CAN總線(xiàn)上,邏輯“0”和“1”之間顯著(zhù)的電壓差是總線(xiàn)可靠通信的保證。參照上面的描述,CAN總線(xiàn)上兩種電平狀態(tài)分別為:

顯性(Dominant ): 0
 隱性(Recessive ): 1
CAN總線(xiàn)的信號電平具有線(xiàn)與特性,即顯性電平(0)總是會(huì )掩蓋隱性電平(1)。如果不同節點(diǎn)同時(shí)發(fā)送顯性和隱性電平,總線(xiàn)上表現出顯性電平(0),只有在總線(xiàn)上所有節點(diǎn)發(fā)送的都是隱性電平(1)時(shí),總線(xiàn)才表現為隱性。線(xiàn)與特性是CAN總線(xiàn)仲裁的電路基礎。詳細仲裁過(guò)程見(jiàn)下文“仲裁機制”部分。

P9.png

 圖6. 高速CAN信號電平( ISO 11898-2)

 

P10.png

 圖7. 低速CAN信號電平( ISO 11898-3)

 

連接器

在前文有提到,業(yè)界只規定了9 Pin D-Sub 類(lèi)型的CAN總線(xiàn)連接器,其信號定義如圖8所示。

P12.png

 圖8. CAN 9 Pin D-Sub引腳定義

 

 

三種CAN標準物理層比較

除了上文介紹的高速CAN和低速CAN外,還有標準定義另外一種CAN物理層結構,即 Single Wire CAN。單線(xiàn)CAN可以減少一根傳輸線(xiàn),但是要求節點(diǎn)間有良好的共地特性(相當于第二根信號線(xiàn))。單線(xiàn)CAN的信號抗干擾能力相對較弱,在設計中需要提高信號幅度以增加信噪比,如此又會(huì )讓它自身的輻射能力增加,因此必須降低其信號傳輸速率以達到電磁兼容的要求。綜上,單線(xiàn)CAN僅適合應用在低速的車(chē)身電子單元、舒適及娛樂(lè )控制領(lǐng)域。低速CAN總線(xiàn)由于信號速度不高,在一根信號線(xiàn)失靈的情況下,仍可工作于單線(xiàn)模式。

三種CAN總線(xiàn)物理層的對比如表3列出??偩€(xiàn)連接拓撲圖如圖9,對于端接,高速CAN端接是在總線(xiàn)兩端,而低速CAN和單線(xiàn)CAN的端接都是在各節點(diǎn)位置。

P13.png

 表3. 三種CAN物理層標準比較

 

P14.png

 圖9. 三種CAN總線(xiàn)物理層的比較

 

 

通信原理

Multi-Master

安全敏感的應用,比如汽車(chē)動(dòng)力,對通信系統的可靠性要求很高。將總線(xiàn)工作正常與否歸結到單一節點(diǎn)是極其危險的,比較合理的方案是對總線(xiàn)接入的去中心化,亦即每個(gè)節點(diǎn)都有接入總線(xiàn)的能力。這也是CAN總線(xiàn)采用多主控(Multi-Master)線(xiàn)性拓撲結構的原因。在CAN總線(xiàn)上,每個(gè)節點(diǎn)都有往總線(xiàn)上發(fā)送消息的能力,而且消息的發(fā)送不必遵從任何預先設定的時(shí)序,通信是事件驅動(dòng)的。只有當有新的信息傳遞時(shí),CAN總線(xiàn)才處于忙的狀態(tài),這使得節點(diǎn)接入總線(xiàn)速度非???。CAN總線(xiàn)理論最高數據傳輸速率為1Mbps,對于異步事件反應迅速,基本上對于毫秒級的實(shí)時(shí)應用沒(méi)有任何問(wèn)題。

尋址機制

不同于其它類(lèi)型的總線(xiàn),CAN總線(xiàn)不設定節點(diǎn)的地址,而是通過(guò)消息的標識符(Identifier)來(lái)區別消息。CAN總線(xiàn)消息是廣播式的,也就是說(shuō)在同一時(shí)刻所有節點(diǎn)都檢測到同樣的電平信號。接受節點(diǎn)通過(guò)識別消息中的標識符,與該節點(diǎn)預設的過(guò)濾規則對比,如果滿(mǎn)足規則就接收這條消息,發(fā)送應答,否則就忽略這條消息,關(guān)于這部分介紹見(jiàn)下文“條件接收”部分。這種機制雖然會(huì )增加消息幀的復雜度(增加標識符),但是節點(diǎn)在此情況下可以無(wú)須了解其它節點(diǎn)的狀況,而相互間獨立工作,在總線(xiàn)上增加節點(diǎn)時(shí)僅須關(guān)注消息類(lèi)型,而非系統上其它節點(diǎn)的狀況。這種以消息標識符尋址的方式,讓在總線(xiàn)上增加節點(diǎn)變得更加靈活。

CSMA/CD+AMP

CAN總線(xiàn)通信原理可簡(jiǎn)單描述為多路載波偵聽(tīng)+基于消息優(yōu)先級的沖突檢測和仲裁機制(CSMA/CD+AMP),CSMA(Carrier Sense Multiple Access )指的所有節點(diǎn)必須都等到總線(xiàn)處于空閑狀態(tài)時(shí)才能往總線(xiàn)上發(fā)送消息;CD+AMP(Collision Detection + Arbitration on Message Priority)指的是如果多個(gè)節點(diǎn)往總線(xiàn)上發(fā)送消息時(shí),具備最高優(yōu)先級(標識符最?。┑南@得總線(xiàn)占有權。

 

幀分類(lèi)

CAN總線(xiàn)定義四種幀類(lèi)型,分別為數據幀、遠程幀、錯誤幀和過(guò)載幀。數據幀就是總線(xiàn)上傳輸用戶(hù)數據的幀,其最高有效載荷是 8 Byte,除了有效載荷外,數據幀還包括必要的幀頭幀位部分以執行CAN標準通信,比如消息標識符(Identifier)、數據長(cháng)度代碼、校驗信息等。遠程幀是用來(lái)向總線(xiàn)上其它節點(diǎn)請求數據的幀,它的幀結構與數據幀相似,只不過(guò)沒(méi)有有效載荷部分;錯誤幀是表示通信出錯的幀。數據幀和遠程幀有標準格式和擴展格式兩種格式。標準格式有 11 位的標識符 , 擴展格式有 29 位標識符。

各種幀的用途分別為:

  • 數據幀:用于發(fā)送單元向接收單元傳送數據的幀;

  • 遠程幀:用于接收單元向具有相同標識符的發(fā)送單元請求數據的幀;

  • 錯誤幀:用于當檢測出錯誤時(shí)向其它單元通知錯誤的幀;

  • 過(guò)載幀:用于接收單元通知其尚未做好接收準備的幀
     

數據幀

數據幀的幀結構如圖10所示,圖中示例標準數據幀(Standard)和擴展數據幀(Extended)兩種格式。各字段定義及長(cháng)度分別為:

  • SOF:表示數據幀開(kāi)始;(1 bit)

  • Identifier:標準格式11 bit,擴展格式29 bit包括Base Identifier(11 bit)和Extended Identifier(18 bit),該區段標識數據幀的優(yōu)先級,數值越小,優(yōu)先級越高;

  • RTR:遠程傳輸請求位,0時(shí)表示為數據幀,1表示為遠程幀,也就是說(shuō)RTR=1時(shí),消息幀的Data Field為空;(1 bit)

  • IDE: 標識符擴展位,0時(shí)表示為標準格式,1表示為擴展格式;(1 bit)

  • DLC:數據長(cháng)度代碼,0~8表示數據長(cháng)度為0~8 Byte;(4 bit)

  • Data Field:數據域;(0~8 Byte)

  • CRC Sequence:校驗域,校驗算法G(x) = x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1;(15 bit)

  • DEL:校驗域和應答域的隱性界定符;(1 bit)

  • ACK:應答,確認數據是否正常接收,所謂正常接收是指不含填充錯誤、格式錯誤、 CRC 錯誤。發(fā)送節點(diǎn)將此位為1,接收節點(diǎn)正常接收數據后將此位置為0;(1 bit)

  • SRR:替代遠程請求位,在擴展格式中占位用,必須為1;(1 bit)

  • EOF:連續7個(gè)隱性位(1)表示幀結束;(7 bit)

  • ITM:幀間空間,Intermission (ITM),又稱(chēng)Interframe Space (IFS),連續3個(gè)隱性位,但它不屬于數據幀。幀間空間是用于將數據幀和遠程幀與前面的幀分離開(kāi)來(lái)的幀。數據幀和遠程幀可通過(guò)插入幀間空間將本幀與前面的任何幀(數據幀、遙控幀、錯誤幀、過(guò)載幀)分開(kāi)。過(guò)載幀和錯誤幀前不能插入幀間空間。

P15.png

 

圖10. CAN標準格式和擴展格式的數據幀/遠程幀格式

 

遠程幀

一般地,數據是由發(fā)送單元主動(dòng)向總線(xiàn)上發(fā)送的,但也存在接收單元主動(dòng)向發(fā)送單元請求數據的情況。遠程幀的作用就在于此,它是接收單元向發(fā)送單元請求發(fā)送數據的幀。遠程幀與數據幀的幀結構類(lèi)似,如上圖X所示。遠程幀與數據幀的幀結構區別有兩點(diǎn):

  • 數據幀的 RTR 值為“0”,遠程幀的 RTR 值為“1”

  • 遠程幀沒(méi)有數據塊

遠程幀的 DLC 塊表示請求發(fā)送單元發(fā)送的數據長(cháng)度(Byte)。當總線(xiàn)上具有相同標識符的數據幀和遠程幀同時(shí)發(fā)送時(shí),由于數據幀的 RTR 位是顯性的,數據幀將在仲裁中贏(yíng)得總線(xiàn)控制權。

 

錯誤幀

用于在接收和發(fā)送消息時(shí)檢測出錯誤時(shí),通知錯誤的幀。錯誤幀由錯誤標志和錯誤界定符構成。錯誤幀的幀結構如圖11示。

  • 錯誤標志:6-12 個(gè)顯性/隱性重疊位

  • 主動(dòng)錯誤標志(6個(gè)顯性位): 處于主動(dòng)錯誤狀態(tài)的單元檢測出錯誤時(shí)輸出的錯誤標志

  • 被動(dòng)錯誤標志(6個(gè)隱性位): 處于被動(dòng)錯誤狀態(tài)的單元檢測出錯誤時(shí)輸出的錯誤標志

  • 錯誤界定符:8 個(gè)隱性位

P16.png

 

圖11. 錯誤幀的幀結構

 

過(guò)載幀

過(guò)載幀是用于接收單元通知發(fā)送單元它尚未完成接收準備的幀。在兩種情況下,節點(diǎn)會(huì )發(fā)送過(guò)載幀:

  • 接收單元條件的制約,要求發(fā)送節點(diǎn)延緩下一個(gè)數據幀或遠程幀的傳輸;

  • 幀間空間(Intermission)的 3 bit 內檢測到顯性位

每個(gè)節點(diǎn)最多連續發(fā)送兩條過(guò)載幀。過(guò)載幀由過(guò)載標志和過(guò)載界定符(8 個(gè)隱性位)構成。數據幀的幀結構如圖12所示。

P17.png

 圖12. 過(guò)載幀的幀結構

 

仲裁機制

如果多個(gè)節點(diǎn)同時(shí)往總線(xiàn)上發(fā)送消息,總線(xiàn)的使用權是通過(guò)消息幀標識符的逐位仲裁機制決定的,在仲裁過(guò)程中消息是不會(huì )丟失的。這里的不會(huì )丟失的意思是指仲裁完成后,獲得總線(xiàn)控制權的消息內容沒(méi)有被仲裁過(guò)程篡改,將繼續在總線(xiàn)上發(fā)送沒(méi)有傳輸完的消息。
在CAN總線(xiàn)上,標識符值越小,消息的優(yōu)先級越高。標識符全零的消息,由于它將總線(xiàn)電平保持在顯性的時(shí)間最長(cháng),因此優(yōu)先級最高。CAN總線(xiàn)的仲裁機制如圖13所示,幾點(diǎn)說(shuō)明:

  • Wire-AND Bus Logic:只有節點(diǎn)發(fā)送的全是隱性,總線(xiàn)電平才表現為隱性;

  • Arbitration Logic:所有發(fā)送節點(diǎn)在發(fā)送數據的同時(shí),也檢測總線(xiàn)上的電平狀態(tài)。如果總線(xiàn)電平狀態(tài)與它發(fā)送的電平狀態(tài)一致,則繼續發(fā)送(Next);如果發(fā)送為顯性,總線(xiàn)電平狀態(tài)為隱性,則傳輸出現故障(Fault);如果發(fā)送為隱性,總線(xiàn)電平狀態(tài)為顯性,則該節點(diǎn)退出對總線(xiàn)占用權的競爭(Stop);

  • 節點(diǎn)A和節點(diǎn)C同時(shí)向總線(xiàn)上發(fā)送數據,在仲裁階段,逐位對比總線(xiàn)上電平與自身發(fā)送的電平,在標識符的第四位(ID7),節點(diǎn)C檢測到總線(xiàn)上電平與其自身發(fā)送電平不一致,它自動(dòng)退出對總線(xiàn)的競爭,節點(diǎn)A則繼續發(fā)送數據

p24.png

 圖13. CAN總線(xiàn)仲裁機制

如上介紹,CAN總線(xiàn)上的逐位仲裁機制與 I2C 總線(xiàn)的仲裁都應用到線(xiàn)與邏輯的電路基礎,不同的是I2C的仲裁只是在主機間進(jìn)行,而CAN總線(xiàn)沒(méi)有主從機的概念。另外I2C的消息本身是不分優(yōu)先級的;CAN消息則是帶優(yōu)先級,有的消息出身高貴(標識符值越?。?,在仲裁中總會(huì )取勝。

為消息劃分優(yōu)先級比較適合于實(shí)時(shí)控制系統,這樣可以確保重要的信息優(yōu)先發(fā)送,相對次要的消息延遲發(fā)送,系統設計師應該根據應用的特點(diǎn)為不同消息確定不同的優(yōu)先級(標識符),在類(lèi)似 DeviceNet 這些規范組織的定義中,對于同樣類(lèi)型的消息,比如溫度傳感器,即使它們可能來(lái)自不同的供應商,但消息標識符是一致的。

對于車(chē)身控制CAN網(wǎng)絡(luò )(舒適+信息娛樂(lè )),其特點(diǎn)是消息標識符種類(lèi)多,而且消息發(fā)送沒(méi)有固定頻率或規律,在此類(lèi)應用的CAN控制器,例如 Freescale 的 MSCAN(Motorola Scalable Controller Area Network)的設計中,控制器內部包括 FIFO 寄存器,它將具有相同標識符的消息按順序保存,從而避免接收緩沖器溢出。而對于動(dòng)力系統控制的CAN網(wǎng)絡(luò ),總線(xiàn)上的消息特點(diǎn)是速度快,但是存在一定規律,此類(lèi)應用的CAN控制器,例如 Freescale 的 FlexCAN(CAN 2.0B-Compliant),它包括 16 ~ 64 個(gè)稱(chēng)為“mailbox”的接收緩沖器,運行時(shí)根據特定的過(guò)濾規則,將不同標識符的消息送到各自對應的 mailbox 。

 

條件接收

前面有提到消息在CAN總線(xiàn)上是廣播式的,但并不是所有節點(diǎn)都會(huì )對總線(xiàn)上所有消息感興趣。節點(diǎn)通過(guò)控制器中過(guò)濾碼(Filter Code )和掩碼(Mask Code),再檢驗總線(xiàn)上消息的標識符,來(lái)判斷是否接收該消息(Message Filtering)。

對于掩碼,“1”表示該位與本節點(diǎn)相關(guān),“0”表示該位與本節點(diǎn)不相關(guān)。舉例如下:

例1:僅接收消息標識符為00001567(十六進(jìn)制)的幀

  • 設置過(guò)濾碼為00001567

  • 設置掩碼為1FFFFFFF

 

節點(diǎn)檢測消息的標識符的所有位(29位),如果標識符為00001567接收,否則舍棄。

例2:接收消息標識符為00001567 到 0000156F 的幀

  • 設置過(guò)濾碼為00001560

  • 設置掩碼為1FFFFFF0

節點(diǎn)檢測消息的標識符的高25位,最低的4位則不care。如果標識符最高25位相同則接收,否則舍棄。

例3:接收消息標識符為00001560 到 00001567 的幀

  • 設置過(guò)濾碼為00001560

  • 設置掩碼為1FFFFFF8

節點(diǎn)檢測消息的標識符的高26位,最低的3位則不care。如果標識符最高26位相同則接收,否則舍棄。

例4:接收所有消息幀幀

  • 設置過(guò)濾碼為0

  • 設置掩碼為0

節點(diǎn)接收總線(xiàn)上所有消息。

 

應答機制

應答位(ACK)用來(lái)表示節點(diǎn)已經(jīng)收到有效的幀。任何節點(diǎn)如果準確無(wú)誤地接收到幀,則要向總線(xiàn)上發(fā)送顯性位,該顯性位將掩蓋發(fā)送節點(diǎn)輸出的隱性位,使總線(xiàn)上表現為顯性。如果發(fā)送節點(diǎn)檢測應答位為隱性,那么說(shuō)明沒(méi)有節點(diǎn)收到有效幀。接收節點(diǎn)可能在應答位輸出隱性表示它沒(méi)有收到有效幀,但另外有收到有效幀的節點(diǎn)也可能輸出顯性表示它收到有效幀,這樣總線(xiàn)上總體上表現為顯性,發(fā)送節點(diǎn)也無(wú)從得知是否總線(xiàn)上所有節點(diǎn)都收到有效的幀。

 

位填充

CAN總線(xiàn)使用到的是非歸零編碼(NRZ),NRZ編碼的優(yōu)點(diǎn)是效率高,但卻不易區分哪里是bit開(kāi)始,哪里是bit結束。因此為確保在同步通信過(guò)程中有足夠的電平跳變,規范中應用到位填充機制,即在每連續 5 個(gè)相同電平后插入 1個(gè)反相電平,接收節點(diǎn)在收到消息后自動(dòng)將填充位刪除。在幀內除了CRC界定符、ACK域和EOF外,其余部分均應用到位填充機制。在應用到位填充的域,檢測到連續 6 個(gè)顯性位或隱性位均視為報錯。檢測到錯誤后,節點(diǎn)將發(fā)出主動(dòng)錯誤標志。注意如前文述,主動(dòng)錯誤標志為連續6個(gè)顯性位,它是不符合位填充規則的,因此檢測到該電平的所有節點(diǎn)都會(huì )報錯。
位填充意味著(zhù)實(shí)際傳輸的數據幀長(cháng)度可能更長(cháng),圖14示例位填充前后的數據幀的變化,紫色位是位填充增加的位,接收節點(diǎn)收到消息后會(huì )自動(dòng)刪除這些位。

P19.png圖14. 數據幀在位填充前后的比較

 

 

錯誤檢驗

完善的錯誤校驗機制是CAN總線(xiàn)高可靠性的有效保證。CAN總線(xiàn)包括 5 種錯誤校驗機制,其中 3 種在消息層面(Message Level),2 種在比特層面(Bit Level) 。如果消息出現五種錯誤中的任何一種,接收節點(diǎn)將不接收消息,并且產(chǎn)生錯誤幀通知發(fā)送節點(diǎn)重新發(fā)送消息,直到接收節點(diǎn)正確地收到消息。如果失效的節點(diǎn)持續不斷地報錯,導致總線(xiàn)掛死,那么在報錯次數達到設定的上限時(shí),它將被控制器從總線(xiàn)上移除(詳見(jiàn)“故障限制”部分)。
消息層面的錯誤校驗機制體現在數據幀(圖10)中的 CRC 校驗域和 ACK 域。CRC校驗域包括傳輸數據的 15 bit Checksum值和 1 bit 界定符。ACK域包括 1 bit ACK位和 1 bit 界定符。消息層面的校驗還包括格式錯誤校驗,格式錯誤校驗會(huì )檢查消息幀中必須為隱性的位,如果這些位表現為顯性,那么節點(diǎn)將報格式錯誤。格式錯誤檢查的隱性位包括SOF、EOF、ACK界定符和CRC界定符。
在比特層面,發(fā)送節點(diǎn)在發(fā)送消息的同時(shí)會(huì )檢測總線(xiàn)電平,如果檢測到總線(xiàn)的狀態(tài)和它發(fā)送的狀態(tài)不符,則發(fā)送節點(diǎn)將報錯。該過(guò)程的兩處例外是消息幀處于標識符仲裁階段和消息應答階段。
最后一種錯誤校驗機制源于CAN總線(xiàn)的位填充機制。除了錯誤標志和EOF,如果節點(diǎn)檢測到連續 6 個(gè)相同電平,它即報填充錯誤。主動(dòng)錯誤標志包括連續6個(gè)顯性位,總線(xiàn)上所有檢測到主動(dòng)錯誤標志的節點(diǎn)都會(huì )報錯,而產(chǎn)生各自的錯誤幀,這意味著(zhù)總線(xiàn)上的錯誤幀可能由原先的 6 bit 到反饋疊加至 12 bit 不等。錯誤幀后面緊接著(zhù)8個(gè)隱性位界定符(如圖10)。在總線(xiàn)空閑時(shí),消息通過(guò)競爭仲裁獲得總線(xiàn)占用權后將重新傳送。

綜上,CAN總線(xiàn)的錯誤類(lèi)型包括以下五種:

  • CRC錯誤(CRC Error)

在發(fā)送消息時(shí),發(fā)送節點(diǎn)會(huì )根據特定的多項式計算出由數據幀SOF位到數據域最末位的Checksum值,并將該值放在數據幀的CRC域,隨著(zhù)數據幀廣播到總線(xiàn)上。接收節點(diǎn)在收到數據后,應用同樣的多項式計算Checksum值,并與收到的Checksum值對比。如果兩者一致,正常接收;如果不一致,則舍棄該消息,并發(fā)送錯誤幀請求發(fā)送節點(diǎn)重傳消息。CRC校驗過(guò)程如圖15所示。

CAN 2.0 規范定義CRC校驗應用的多項式為:

P20.png

 

P21.png

 圖15. CRC校驗機制

  • 應答錯誤(ACK Error)

發(fā)送單元在A(yíng)CK位中檢測到隱性電平時(shí)所檢測到的錯誤(ACK沒(méi)被傳送過(guò)來(lái)時(shí)所檢測到的錯誤)。

  • 格式錯誤(Form Error)

檢測出與固定格式的位段相反的格式時(shí)所檢測到的錯誤。

  • 位錯誤(Bit Error)

比較輸出電平和總線(xiàn)電平(不含填充位),當兩電平不一樣時(shí)所檢測到的錯誤。

  • 填充錯誤(Stuff Error)

在需要位填充的段內,連續檢測到 6 位相同的電平時(shí)所檢測到的錯誤。

 

故障限制

CAN總線(xiàn)上的每個(gè)節點(diǎn)控制器都會(huì )檢測消息是否出錯,如果節點(diǎn)發(fā)現消息出錯,它將發(fā)送錯誤標志,從而打斷總線(xiàn)上正常的數據傳輸??偩€(xiàn)上其它沒(méi)有發(fā)現原始消息錯誤的節點(diǎn),在收到錯誤標志后將采取必要的措施,比如舍棄當前總線(xiàn)上的消息。CAN節點(diǎn)內部有兩種錯誤狀態(tài)計數器 TEC 和 REC 。節點(diǎn)通過(guò)特定的規則管理這兩個(gè)計數器的值,其中:

  • TEC /Transmit Error Counter,發(fā)送錯誤狀態(tài)計數器,出現一次錯誤該計數器值 +8;

  • REC /Receive Error Counter,接收錯誤狀態(tài)計數器,出現一次錯誤該計數器值 +1;

  • 消息成功發(fā)送或接收一次,對應的 TEC 或 REC 值相應 -1


TEC 增加的速度快于 REC 增加的速度,這是因為有很大概率地是發(fā)送節點(diǎn),而不是接受節點(diǎn)出錯!基于 TEC 和 REC數值的變化,CAN規范定義了節點(diǎn)的 3 種基本錯誤狀態(tài):

  • Error Active:正常狀態(tài),在此狀態(tài)下,節點(diǎn)可以發(fā)送所有類(lèi)型的幀,包括錯誤幀;

  •  Error Passive:節點(diǎn)可以發(fā)送除錯誤幀以外的所有幀;

  • Bus Off:節點(diǎn)被控制器從總線(xiàn)上隔離

節點(diǎn)的三種錯誤狀態(tài)切換關(guān)系如圖16所示。

P22.png

 圖16. CAN總線(xiàn)節點(diǎn)錯誤狀態(tài)切換圖

 

波形舉例

圖17示例CAN通信過(guò)程信號波形。在 1 時(shí)刻,節點(diǎn)A向總線(xiàn)上發(fā)送消息;在 2 時(shí)刻,節點(diǎn)B和C收到消息,發(fā)送響應應答;在 3 時(shí)刻,節點(diǎn)B和C同時(shí)向總線(xiàn)上發(fā)送消息,競爭仲裁后節點(diǎn)C獲得總線(xiàn)占用權,在 4 時(shí)刻繼續發(fā)送未傳輸完畢的數據;節點(diǎn)A和B在 5 時(shí)刻響應C發(fā)送的消息;在總線(xiàn)空閑的 6 時(shí)刻,B發(fā)送消息到總線(xiàn)上;在 7 時(shí)刻節點(diǎn)A和B響應節點(diǎn)B發(fā)送的消息;在 8 時(shí)刻,節點(diǎn)A向空閑總線(xiàn)上發(fā)送消息。

P23.png

 圖17. CAN通信過(guò)程舉例

 




關(guān)鍵詞: CAN總線(xiàn)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>