乾貨|多年經驗工程師總結CAN匯流排入門知識

01

簡介

CAN匯流排由德國BOSCH公司開發,最高速率可達到1Mbps。CAN的容錯能力特別強,CAN控制器內建了強大的檢錯和處理機制。另外不同於傳統的網路(比如USB或者乙太網),CAN節點與節點之間不會傳輸大資料塊,一幀CAN訊息最多傳輸8位元組使用者資料,採用短資料包也可以使得系統獲得更好的穩定性。CAN匯流排具有匯流排仲裁機制,可以組建多主系統。

02

CAN標準

CAN是一個由國際化標準組織定義的序列通訊匯流排。最初是用於汽車工業,使用兩根訊號匯流排代替汽車內複雜的走線。CAN匯流排具有高抗干擾性、自診斷和資料偵錯功能,這些特性使得CAN匯流排在各種工業場合廣泛使用,包括樓宇自動化、醫療和製造業。

CAN通訊協議ISO-11898:2003標準介紹網路上的裝置間資訊是如何傳遞的,以及符合開放系統互聯參考模型(OSI)的哪些分層項。實際通訊是在連線裝置的物理介質中進行,物理介質的特性由模型中的物理層定義。ISO11898體系結構定義七層,OSI模型中的最低兩層作為資料鏈路層和物理層,見圖2-1。

乾貨|多年經驗工程師總結CAN匯流排入門知識

圖2-1:ISO 11898標準架構分層

在圖2-1中,應用程式層建立了上層應用特定協議,如CANopenTM協議的通訊鏈路。這個協議由全世界的使用者和廠商組織、CiA維護,詳情可訪問CiA網站:can-cia。de。許多協議是專用的,比如工業自動化、柴油發動機或航空。另外的工業標準例子,是基於CAN的協議的,由KVASER和Rockwell自動化開發的DeviceNetTM。

03

標準CAN和擴充套件CAN

CAN通訊協議是一個載波偵聽、基於報文優先順序碰撞檢測和仲裁(CSMA/CD+AMP)的多路訪問協議。CSMA的意思是總線上的每一個節點在企圖傳送報文前,必須要監聽匯流排,當匯流排處於空閒時,才可傳送。CD+AMP的意思是透過預定程式設計好的報文優先順序逐位仲裁來解決碰撞,報文優先順序位於每個報文的標識域。更高級別優先順序標識的報文總是能獲得匯流排訪問權,即:識別符號中最後保持邏輯高電平的會繼續傳輸,因為它具有更高優先順序。

ISO-11898:2003標準,帶有11位識別符號,提供的最高訊號速率從125Kbps到1Mbps。更遲一些的修訂標準使用了擴充套件的29位識別符號。標準11位識別符號位域參見圖3-1,提供2048個不同的報文識別符號,擴充套件29位識別符號位域參見圖3-2,提供537百萬個不同報文識別符號。

3.1 標準CAN

標準CAN只有11位識別符號,每幀的資料長度為51+(0~64)=(51~117)位。注:不計位填充(位填充將在本文第5節描述)。

圖3-1:標準CAN——-11位識別符號

· SOF - 幀起始,顯性(邏輯0)表示報文的開始,並用於同步總線上的節點。

· 識別符號 - 標準CAN具有11位識別符號,用來確定報文的優先順序。此域的數值越小,優先順序越高。

· RTR - 遠端傳送請求位,當需要從另一個節點請求資訊時,此位為顯性(邏輯0)。所有節點都能接收這個請求,但是幀識別符號確定被指定的節點。響應資料幀同樣被所有節點接收,可以被有興趣的節點使用。

· IDE - 識別符號擴充套件位為顯性時表示這是一個標準CAN格式,為隱形表示這是擴充套件CAN格式。

· r0 - 保留位(可能將來標準修訂會使用)

· DLC - 4位資料長度程式碼表示傳輸資料的位元組數目,一幀CAN最多傳輸8位元組使用者資料

· 資料0~8 – 最多可以傳輸8位元組使用者資料

· CRC - 16位(包括1位定界符)CRC校驗碼用來校驗使用者資料區之前的(包含資料區)傳輸資料段。

· ACK - 2位,包含應答位和應答界定符。傳送節點的報文幀中,ACK兩位是隱性位,當接收器正確地接收到有效的報文,接收器會在應答位期間向傳送節點發送一個顯性位,表示應答。如果接收器發現這幀資料有錯誤,則不向傳送節點發送ACK應答,傳送節點會稍後重傳這幀資料。

· EOF – 7位幀結束標誌位,全部為隱性位。如果這7位出現顯性位,則會引起填充錯誤。

· IFS – 7位幀間隔標誌位,CAN控制器將接收到的幀正確的放入訊息緩衝區是需要一定時間的,幀間隔可以提供這個時間。

3.2 擴充套件CAN

擴充套件CAN具有29位識別符號,每幀資料長度為71+(0~64)=(71~135)位。注:不計位填充(位填充將在本文第5節描述)。

圖3-2:擴充套件CAN——-29位識別符號

擴充套件CAN訊息相對於標準CAN訊息增加的內容如下:

· SRR – 代替遠端請求位,為隱性。所以當標準幀與擴充套件幀傳送相互衝突並且擴充套件幀的基本識別符號與標準幀的識別符號相同時,標準幀優先順序高於擴充套件幀。

· IDE – 為隱性位表示標誌位擴充套件幀,18位擴充套件識別符號緊跟著IDE位。

· r1 – 保留

04

CAN訊息

4.1仲裁

典型CAN的基本原理見圖4-1所示,從圖中可以看出,匯流排邏輯狀態與驅動器輸入和接收器輸出邏輯是相反的。正常情況下,邏輯高電平為1,邏輯低電平為0,但是CAN匯流排卻是邏輯高電平為0,稱為顯性,邏輯低電平為1,稱為隱性。所以很多收發器的驅動器輸入端都會內建上拉電阻,在沒有任何輸入時,CAN匯流排就會表現為隱性(邏輯低電平)。

乾貨|多年經驗工程師總結CAN匯流排入門知識

圖4-1:反轉的CAN匯流排邏輯

在匯流排空閒時,最先開始傳送報文的節點獲得傳送權。

如果多個節點同時訪問匯流排,CAN使用非破壞式、逐位仲裁的方式決定哪個節點使用匯流排:各發送節點從仲裁域(識別符號和RTR域)的第1位開始進行仲裁,連續輸出顯性電平(0)最多的節點可以繼續傳送。因此識別符號數值越低的CAN報文,優先順序越高。識別符號數值為0的CAN報文,具有最高優先順序,因為它輸出的顯性電平最多。

4.2訊息型別

CAN有四種不同的報文型別:資料幀、遠端幀、錯誤幀和過載幀。

05

位填充飢制

幀起始、仲裁域、控制域、資料域以及CRC校驗和域,均透過位填充方法編碼。位填充是指,無論何時,傳送器只要檢測到位流中有5個連續相同邏輯的位,便會自動在位流中插入一個補碼位。舉例來說,如果連續5個顯性位,則在5個顯性位之後自動插入1個隱性位。接收器會自動刪除這個插入的填充位。

資料幀或遠端幀的剩餘位域(CRC界定符、應答域和幀結尾域)形式固定,不填充。錯誤幀和過載幀也不填充。

CAN網路同步需要足夠多的上升沿,這是CAN協議規定位填充的目的之一。位填充的其它作用:確保資料幀不會被當作錯誤幀(由6個連續的顯性或隱性位組成)、確保正確識別幀結束標誌(7個連續隱性位)。

06

錯誤檢測和故障界定

CAN匯流排具有很高的健壯性,這可能要歸功於CAN具有多種錯誤檢查機制。CAN協議制定了5種錯誤檢測方法:三種位於報文層,兩種位於位流層。如果一個數據幀出現錯誤,那麼這個幀會被丟棄,並且接收節點還會發送一個錯誤幀。這會強制傳送節點重複傳送出錯的報文,直到接收節點正確接收。如果同一個報文重複出錯,達到一定次數後,傳送節點可以關閉傳送功能以降低對匯流排的影響。

報文層的錯誤檢測包括CRC和ACK。16位的CRC域包含15位校驗和、1位界定符。ACK域包括1位應答位、1位界定符。

CRC校驗錯誤很好理解,它對資料域以及資料域之前的位生產CRC校驗。由於一幀CAN報文資料流很小(最多8個使用者資料),所以15位CRC的偵錯能力非常優秀。

ACK域是怎麼起作用的呢?這是由CAN協議規定的,即傳送節點發送一幀資料後,接收節點必須向傳送節點應答,如果傳送節點沒有收到接收節點的應答訊號,就會認為自己傳送失敗,從而重傳資料。

報文層的第三種錯誤檢查方法是格式檢查。這種檢查會監控報文中那些一定為隱性位的域,如果這些域中出現顯性位,則檢測到格式錯誤。這些域包括SOF、EOF、ACK的界定符和CRC的界定符。

位流層的錯誤檢測之一是傳送到總線上的每一個數據位,都會被監視,如果發現傳送的位和總線上的位不相同時,產生位錯誤。這種監視機制並不會監視仲裁域的位,這是因為多個節點同時競爭匯流排時,優先順序高的節點可能會覆寫總線上的仲裁域位。

位流層的另外一個錯誤檢測機制是位填充規則:5個連續相同邏輯位之後,如果第6個位的邏輯還和前五個相同,則產生位填充錯誤。

07

網路拓撲

CAN使用差分訊號,需要一對訊號線,推薦使用雙絞線,網路拓撲如圖7-1所示。使用差分訊號可以抑制共模干擾、能夠增加系統可靠性,允許使用更高的速率。

高速ISO 11898標準規定了CAN傳輸最高速率為1Mbps,在這個速率下,傳輸距離最長40米(掛接30個節點,CAN訊號不隔離)。推薦節點分支長度最大為0。3米、推薦使用帶遮蔽或不帶遮蔽的雙絞線,線纜特性阻抗為120歐姆。

乾貨|多年經驗工程師總結CAN匯流排入門知識

圖7-1:CAN匯流排網路拓撲結構圖

08

終端匹配

終端匹配電阻大小等於傳輸電纜特性阻抗,傳輸電纜特性阻抗由電纜供應商提供,一般近似為Z=√(L/C)。其中L為電纜單位長度感抗,C為電纜單位長度電容。

由於CAN收發器結構,從隱性變成顯性由電晶體驅動,所以都是很陡的,但是從顯性回到隱性,卻需要終端電阻來放電,否則就會由於導線分佈電容,緩慢放電,導致位寬錯誤。所以所謂的近距離、低波特率CAN匯流排不加終端電阻的做法,都是錯誤的。

RS485與CAN匯流排不同,由於RS485收發器中一般都內建失效保護電路,在近距離、低波特率下允許不加終端匹配電阻。

09

電纜與接線

CAN匯流排採用差分訊號傳輸,如果使用帶遮蔽雙絞線,遮蔽層應單點接地。

圖9-11列出帶單遮蔽層的CAN電纜剖析與連線線示範。

圖9-1:電纜訊號分配、接地和終端匹配

通常電纜截面積越小,其分佈電容、分佈電感和直流電阻越大。當通訊距離較遠時,電容、電感和直流電阻會引起訊號衰減,波形失真和抖動。

一般情況下,電纜供應商會提供訊號衰減圖表。

圖9-2所示的曲線顯示了24-AWG電纜衰減和頻率的關係。

乾貨|多年經驗工程師總結CAN匯流排入門知識

圖9-2:訊號衰減

10

差分訊號電壓幅值

如圖10-1所示,兩條訊號線CAN_H和CAN_L靜態時均為2。5V左右,此時狀態表示邏輯1,稱作隱性;CAN_H比CAN_L高表示邏輯0,稱為顯性,此時通常CAN_H電壓3。5V、CAN_L電壓1。5V。

乾貨|多年經驗工程師總結CAN匯流排入門知識

圖10-1:CAN電平幅值

CAN標準規定,CAN總線上的差分電壓>0。9V才能被識別成顯性電平,

表10-1:差分電壓幅值與電平極性關係

在實際專案佈線時,容易漏加或者多加終端匹配電阻。我們可以透過測量CAN差分電壓幅值來評估是否漏加或多加終端匹配電阻。如果不計導線電阻,終端電阻固定為120歐姆,單節點CAN匯流排差分電壓如表10-2所示。

表10-2:終端匹配電阻數目與差分電壓幅值關係

11

電纜截面積與通訊距離

電纜截面積對通訊距離影響很大,特別是遠距離通訊。遠距離傳輸線上的分佈電容、分佈電感和直流引數會引起訊號衰減。很多CAN通訊應用都具有距離遠、波特率低的特性。比如本公司的KTC161通訊控制系統使用10kpbs,傳輸距離要不小於3km。這種情況下,傳輸電纜的直流電阻對傳輸距離影響非常大,因為這個直流電阻會和終端匹配電阻分壓。

如圖11-1所示,1號節點與2號節點相隔5km,使用的傳輸電纜直流電阻12。8歐姆/km,終端匹配電阻為124歐姆。1號節點發送的波形差分電壓幅值為2V,經過5km傳輸電纜到2號節點時,差分電壓幅值大約為1V,訊號衰減了一半!我們在上文第10節中提到過:CAN總線上的差分電壓>0。9V才能被識別成顯性電平,現在2號節點只有1V差分電壓,其可靠性已經變的較低。

為了保證可靠的資料通訊,一個有用的經驗法則是:最末端節點差分電壓幅值不小於1。2V。

注意圖中故意忽略了分佈電容和分佈電感的影響,因此傳輸的波形沒有畸變。

乾貨|多年經驗工程師總結CAN匯流排入門知識

圖11-1:傳輸電纜直流電阻分壓示意圖

對於雙絞線,假設其終端匹配電阻與電纜特性阻抗相同,則截面積與最大通訊距離可參考表11-1:

表11-1:截面積與最大通訊距離關係

為了把電纜直流電阻引起的電壓衰減降到最小,較大的終端電阻值(150~300歐姆)有助於增加匯流排長度。比如使用截面積為1。5 mm2的雙絞線電纜,電纜特性阻抗為120歐姆。傳輸波特率為5kpbs的資料時,使用120歐姆的匹配電阻最遠可以傳輸5km,但使用300歐姆的匹配電阻則可以傳輸7km!

12

波特率、終端匹配電阻與通訊距離

上文第11節講述了傳輸線截面積與通訊距離的關係,本小節將保持傳輸線截面積不變,檢視其它引數對通訊距離的影響。以截面積為1。5 mm2遮蔽雙絞線為例,其波特率、終端匹配電阻與通訊距離的關係如圖12-1所示。其中,當波特率較高,通訊距離有限。比如1Mbps,訊號隔離後的CAN通訊距離大約為25~30米(大部分的實際專案中都會對CAN通訊模組電氣隔離,隔離器件會降低通訊距離)。波特率較低並且將終端匹配電阻增大,可遠距離通訊。比如5kbps、終端匹配電阻為390歐姆時,通訊距離可達10km!

乾貨|多年經驗工程師總結CAN匯流排入門知識

圖12-1:波特率、終端匹配電阻和通訊距離關係圖

13

訊號延遲與通訊距離

高波特率情況下,制約CAN通訊距離的,是訊號延遲。訊號經過隔離光耦、傳輸電纜、ESD器件時,都會引起訊號延遲。如果CAN的重同步也不足以彌補這個延遲,就會導致取樣錯誤,最終CRC校驗錯誤。

圖12-1給出了截面積為1。5mm2傳輸電纜,在不同波特率和終端匹配電阻下的最大通訊距離。其中當波特率為1Mbps時,通訊距離大約為30米。30米的通訊電纜,其傳輸損耗可以忽略不計,此時影響通訊距離的主要是訊號延遲。

通常,傳輸電纜延時為5ns/m、高速光耦延時可達25ns、磁耦合隔離器件延遲3~5ns。在CAN通訊系統中,一個優良的延遲標準是:

其中:

tl_MAX:最大延遲時間

tBIT:位時間

以1Mbps為例,其位時間為1us,則tl_MAX

這也是為什麼RS485波特率可以達到10Mbps甚至50Mbps,而CAN標準最大速率只有1Mbps的原因。

表13-1給出了判定延遲的參考標準,在實際專案中,推薦訊號延遲處於良好一欄標準。

表13-1:最大延遲參考標準

14

節點最小間距

CAN匯流排是分散式引數電路,其電氣特性和響應主要由沿物理介質分佈的電感和電容所決定。這裡物理介質包括連線電纜、聯結器、終端和沿匯流排掛接的CAN裝置。

空載情況下,傳輸電纜的特性阻抗近似為Z=√(L/C),其中L為電纜單位長度感抗,C為電纜單位長度電容。隨著負載的增加,傳輸線上的電容增加(負載電容、負載與匯流排連線線電容),傳輸電纜特性阻抗相比空載情況下變小。如果負載比較集中,則負載區傳輸電纜特性阻抗和空閒區電纜特性阻抗相差較大,從而會引起阻抗不匹配。如圖14-1所示。

圖14-1:負載不均衡的CAN匯流排原理示意圖

CAN匯流排阻抗不匹配會產生訊號反射,雪上加霜的是CAN的仲裁機制:在仲裁期間,兩個或更多個節點可能同時傳送多個顯性位。如圖14-1所示,當開關S1在t=0時刻從顯性狀態切換到隱性狀態,CAN驅動器差分輸出電壓為Vs,總線上的差分訊號會由顯性狀態(Vs)變成穩定的隱性狀態(0V)。這個訊號波形會沿著匯流排向下傳播,到達匯流排的負載區時,阻抗不匹配引起的反射電壓將返回到源端。

負載與負載之間的最小安全距離d是裝置集總負載電容CL和電纜的單位長度分佈電容C的函式,定義如下:

裝置集總負載電容CL包括CAN收發器引腳、聯結器、隔離器件、保護器件、印製電路板走線以及其它物理連線的電容總和。

3。3V的CAN收發器一般能達到16pF電容,具體可以參考收發器資料手冊;印製板走線一般0。5pF~0。8pF/cm,這取決於電路板的材質和結構;聯結器和保護裝置(比如ESD器件)的電容值可能範圍會很大,具體要參考裝置資料手冊;非遮蔽雙絞線介質的分佈電容大約在40pF/m~70pF/m。

圖14-2給出了更明瞭的圖表顯示。

乾貨|多年經驗工程師總結CAN匯流排入門知識

圖14-2:最小CAN裝置間距

15

訊號位取樣點位置

訊號位取樣點是指CAN節點識別一個電平邏輯的位置。CAN標準把總線上的每一位都細分為不同的階段,如圖15-1所示。在圖中可以看到,每個位被分為同步段、傳播段、相位緩衝段1和相位緩衝段2四個連續部分。其中取樣點位於相位緩衝段1之後,同步段、傳播段、相位緩衝段1和相位緩衝段2的持續時間都是可以程式設計的,因此取樣點位置也是間接可程式設計的。

圖15-1:每一個數據位的分段示意圖

一般CAN節點是每個位取樣一次(也可以取樣3次,多用於低速場合),取樣點位置都在一個位的50%以後的區域,這是為了讓訊號電平趨於穩定。取樣點越靠後,波形越穩定。但也不是越靠後越好,取樣點位置超過95%時,因為傳輸過程中的位偏差,可能會引起錯誤。CIA推薦取樣點為一個位時間的87。5%處,實際專案中,一般設定為70%~90%,大部分汽車廠商規定取樣點為70~80%。

取樣點略靠後,比如80~90%,有利於遠距離傳輸。提高節點波特率暫存器中的同步跳轉寬度SJW值(加大到3個單位時間),可以加大位寬度和取樣點的容忍度。

16

波特率偏差

由於受到晶振影響,CAN通訊波特率實際值與理論值會有偏差。如果兩個節點之間波特率偏差較大,容易造成誤位元速率增大或通訊失敗等問題。

CAN標準規定,設定的理論波特率與實際波特率偏差不得超過±1%;節點需要容忍的波特率偏差不得小於±3%。

17

節點容抗

在CAN通訊電路設計過程中,節點容抗是容易被忽略的。節點容抗包括收發器引腳電容、PCB走線電容、ESD器件電容以及其它連線電容。

CAN標準對節點容抗有嚴格定義,容抗影響上升沿下降沿斜率,節點容抗增大,上升沿和下降沿會變緩,導致位時間畸變,誤位元速率增加。上升沿和下降沿變緩會使得訊號延遲變大,在高波特率下,影響訊號傳輸質量和通訊距離。

節點容抗不易測量,需要專門儀器。在電路設計時,要對結合資料手冊中給出的典型值,對CAN介面電路使用的器件總電容值進行估算。對於高波特率情況下,單節點電容推薦

表17-1:單節點電容最大值

18

節點數量

可以連線到網路上的節點數量由收發器可以驅動的最小負載阻抗來決定。最大節點數量由下面的公式給出(考慮最壞情況):

其中:

Rdiff_min:收發器差動輸入阻抗最小值

RL_min:收發器可驅動的負載電阻最小值

RT_min:終端匹配電阻最小值

在上式中,收發器差動輸入阻抗最小值(Rdiff_min)和收發器可驅動的負載阻抗最小值(RL_min)由收發器晶片決定,終端匹配電阻最小值(RT_min)由傳輸電纜特性阻抗以及具體應用決定。

以本公司使用的PCA82C251收發器為例,其收發器差動輸入阻抗最小值Rdiff_min = 20K歐姆,收發器可驅動的負載阻抗最小值RL_min = 45歐姆,假設終端匹配電阻最小值RT_min = 120歐姆,則最大節點數量為112個。

19

共模電壓範圍

共模電壓是指總線上的傳送節點地和接收節點地之間的電勢差。過高的共模電壓會對系統造成影響,可能造成間歇重啟、死鎖、誤位元速率增高甚至損害裝置。在遠距離通訊系統中,共模干擾的問題會更加突出,因為隨著通訊線距離的增加,地環路會拾取更多的噪聲,使得共模電壓增大。

目前的CAN收發器都可以容忍一定的共模電壓,ISO 11898標準規定,CAN收發器必須能容忍-2V~7V的共模電壓。對於長達數千米的CAN通訊系統來說,標準規定的共模電壓容忍能力遠遠達不到實際要求,因此電流隔離對於遠距離資料傳輸系統來說仍是必須的。

20

匯流排短路保護和熱關斷保護

匯流排短路保護是指匯流排與電源或地短路後,CAN收發器不會損壞,短路故障解除後,CAN收發器能繼續工作。這個特性可以在匯流排極性反接、電纜絕緣層失效、意外短路到高壓源時對收發器提供保護。

熱關斷電路用於幫助CAN收發器防禦因短路產生破壞性電流和高溫。一旦啟用熱關斷電路,裝置會進入關斷模式。當裝置冷卻到正常操作溫度時,裝置自動恢復執行。

本公司使用的PCA82C251收發器具有短路保護和熱關斷保護。短路保護允許匯流排與24V電源短接。

21

電流隔離

遠距離資料傳輸可能會有較大的地電勢差、地環流等問題,會在CAN總線上形成高共模電壓。如果共模電壓超出CAN收發器容忍的最大限度,資料鏈路就會不正常。

解決這些問題的一個方法是使用電流隔離:隔離變壓器為系統提供電源,光耦或數字隔離器件提供資料隔離。電流隔離可以去除地環流,抑制噪聲電壓。採用電流隔離的電路如圖21-1所示,本公司CAN介面電路也採用了電流隔離處理。

乾貨|多年經驗工程師總結CAN匯流排入門知識

圖21-1:遠距離通訊電流隔離電路示意圖

22

CAN介面電路與RS485介面電路

CAN匯流排和RS485匯流排都是採用差分訊號傳輸資料,它們在匯流排拓撲、終端匹配、訊號衰減、隔離與接地、波特率與通訊距離關係等方面都是相似的。但是CAN有自己的一些特性,在介面設計中,不能照抄RS485介面電路。

CAN匯流排對訊號延遲敏感,因此訊號隔離必須使用高速光耦或者磁耦合器件,以減少訊號延遲。公司大量使用的TLP521光耦因為延遲時間過大(微秒級)不可以用於CAN介面電路。

CAN匯流排對電容敏感,在設計CAN介面電路時,需要使用CAN專用共模電感、專業ESD器件;需要根據應用的最大波特率和通訊距離,來決定是否在CAN總線上增加濾波電容以及濾波電容的大小。

TAG: 匯流排節點波特率通訊電纜