a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 汽車電子 > 設計應用 > 汽車CAN總線詳解

汽車CAN總線詳解

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

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

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

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

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

 

發(fā)展歷史

  • 1983年,BOSCH開始著手開發(fā)

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

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

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

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

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

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

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

  •  ISO 11898-3:低速CAN總線物理層協(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定義了在仲裁后確使用不同的數(shù)據(jù)幀結構,從而達到最高 12Mbps 數(shù)據(jù)傳輸速率。CAN FD與CAN 2.0協(xié)議兼容,可以與傳統(tǒng)的CAN 2.0設備共存于同樣的網(wǎng)絡

 

標準化

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

 

底層標準

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

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

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

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

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

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

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

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

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

 


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

P1.png圖1. CAN總線標準

 

 

 

上層標準

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

Sheet 1.png

 表1. CAN上層標準舉例

 

 

總線特點

  • 符合OSI開放式通信系統(tǒng)參考模型;

  •  兩線式總線結構,電氣信號為差分式;

  • 多主控制。在總線空閑時,所有的單元都可開始發(fā)送消息,最先訪問總線的單元可獲得發(fā)送權;

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

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

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

  • 事件觸發(fā)型。只有當有消息要發(fā)送時,節(jié)點才向總線上廣播消息;

  • 可以通過發(fā)送遠程幀請求其它節(jié)點發(fā)送數(shù)據(jù);

  • 消息數(shù)據(jù)長度 0~8 Byte;

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

  •  發(fā)送消息出錯后,節(jié)點會自動重發(fā);

  •  故障限制。節(jié)點控制器可以判斷錯誤是暫時的數(shù)據(jù)錯誤還是持續(xù)性錯誤,當總線上發(fā)生持續(xù)數(shù)據(jù)錯誤時,控制器可將節(jié)點從總線上隔離;

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

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

  • 在40米線纜條件下,最高數(shù)據(jù)傳輸速率 1Mbps;

  • 總線上可同時連接多個節(jié)點,可連接節(jié)點總數(shù)理論上是沒有限制的,但實際可連接節(jié)點數(shù)受總線上時間延遲及電氣負載的限制;

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

應用

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

P2.png

 P3.png

 

圖2. 傳統(tǒng)網(wǎng)絡結構 VS 總線式結構

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

  • Convenience CAN /舒適CAN網(wǎng)絡,主要控制車門窗、空調(diào)等設備,最高傳輸速度100 kbps

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

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

根據(jù)數(shù)據(jù)傳輸速度不同CAN總線分兩類:高速CAN(ISO 11898-2)和低速CAN(ISO 11898-3)。

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

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

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

P4.png

 圖2a. 汽車內(nèi)總線系統(tǒng)舉例

 

局限性

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

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

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

電路基礎

硬件拓撲

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

P5.png

 圖3. CAN總線節(jié)點示意圖

 

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

P6.png

 表2. CAN總線長度與信號速率關系(推薦)

 

 

收發(fā)器

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

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

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

P7.png

 

 

 

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

P8.png

 圖5. 共模電感降低輻射

 

 

信號電平

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

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

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

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

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

P9.png

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

 

P10.png

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

 

連接器

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

P12.png

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

 

 

三種CAN標準物理層比較

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

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

P13.png

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

 

P14.png

 圖9. 三種CAN總線物理層的比較

 

 

通信原理

Multi-Master

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

尋址機制

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

CSMA/CD+AMP

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

 

幀分類

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

各種幀的用途分別為:

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

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

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

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

數(shù)據(jù)幀

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

  • SOF:表示數(shù)據(jù)幀開始;(1 bit)

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

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

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

  • DLC:數(shù)據(jù)長度代碼,0~8表示數(shù)據(jù)長度為0~8 Byte;(4 bit)

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

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

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

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

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

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

  • ITM:幀間空間,Intermission (ITM),又稱Interframe Space (IFS),連續(xù)3個隱性位,但它不屬于數(shù)據(jù)幀。幀間空間是用于將數(shù)據(jù)幀和遠程幀與前面的幀分離開來的幀。數(shù)據(jù)幀和遠程幀可通過插入幀間空間將本幀與前面的任何幀(數(shù)據(jù)幀、遙控幀、錯誤幀、過載幀)分開。過載幀和錯誤幀前不能插入幀間空間。

P15.png

 

圖10. CAN標準格式和擴展格式的數(shù)據(jù)幀/遠程幀格式

 

遠程幀

一般地,數(shù)據(jù)是由發(fā)送單元主動向總線上發(fā)送的,但也存在接收單元主動向發(fā)送單元請求數(shù)據(jù)的情況。遠程幀的作用就在于此,它是接收單元向發(fā)送單元請求發(fā)送數(shù)據(jù)的幀。遠程幀與數(shù)據(jù)幀的幀結構類似,如上圖X所示。遠程幀與數(shù)據(jù)幀的幀結構區(qū)別有兩點:

  • 數(shù)據(jù)幀的 RTR 值為“0”,遠程幀的 RTR 值為“1”

  • 遠程幀沒有數(shù)據(jù)塊

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

 

錯誤幀

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

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

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

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

  • 錯誤界定符:8 個隱性位

P16.png

 

圖11. 錯誤幀的幀結構

 

過載幀

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

  • 接收單元條件的制約,要求發(fā)送節(jié)點延緩下一個數(shù)據(jù)幀或遠程幀的傳輸;

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

每個節(jié)點最多連續(xù)發(fā)送兩條過載幀。過載幀由過載標志和過載界定符(8 個隱性位)構成。數(shù)據(jù)幀的幀結構如圖12所示。

P17.png

 圖12. 過載幀的幀結構

 

仲裁機制

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

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

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

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

p24.png

 圖13. CAN總線仲裁機制

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

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

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

 

條件接收

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

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

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

  • 設置過濾碼為00001567

  • 設置掩碼為1FFFFFFF

 

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

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

  • 設置過濾碼為00001560

  • 設置掩碼為1FFFFFF0

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

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

  • 設置過濾碼為00001560

  • 設置掩碼為1FFFFFF8

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

例4:接收所有消息幀幀

  • 設置過濾碼為0

  • 設置掩碼為0

節(jié)點接收總線上所有消息。

 

應答機制

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

 

位填充

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

P19.png圖14. 數(shù)據(jù)幀在位填充前后的比較

 

 

錯誤檢驗

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

綜上,CAN總線的錯誤類型包括以下五種:

  • CRC錯誤(CRC Error)

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

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

P20.png

 

P21.png

 圖15. CRC校驗機制

  • 應答錯誤(ACK Error)

發(fā)送單元在ACK位中檢測到隱性電平時所檢測到的錯誤(ACK沒被傳送過來時所檢測到的錯誤)。

  • 格式錯誤(Form Error)

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

  • 位錯誤(Bit Error)

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

  • 填充錯誤(Stuff Error)

在需要位填充的段內(nèi),連續(xù)檢測到 6 位相同的電平時所檢測到的錯誤。

 

故障限制

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

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

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

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


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

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

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

  • Bus Off:節(jié)點被控制器從總線上隔離

節(jié)點的三種錯誤狀態(tài)切換關系如圖16所示。

P22.png

 圖16. CAN總線節(jié)點錯誤狀態(tài)切換圖

 

波形舉例

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

P23.png

 圖17. CAN通信過程舉例

 




關鍵詞: CAN總線

評論


相關推薦

技術專區(qū)

關閉