汽車常用總線
CAN發展時間線
1983年,Bosch開始研究汽車網絡技術
1986年,Bosch在SAE(美國汽車工程師協會)大會正式公布CAN協議
1987年,Intel和Philips先后推出CAN控制器芯片
1991年,Bosch頒布CAN 2.0技術規范,同年,CAN總線最先在Benz S系列轎車上實現
1993年,ISO頒布CAN國際標準ISO-11898
1994年,CiA(CAN in AUTOMATION)組織舉辦第一屆國際CAN大會(iCC),同年,CiA在中國開了第一場CAN研討會
2011年,Bosch發布第二代CAN通信技術:CANFD 1.1版(Non-ISO)
2015年,CAN FD被ISO標準化
2018年,CiA應大眾汽車要求開始開發第三代CAN通信技術CAN XL
2020年,CAN XL登場第十七屆iCC大會
CAN的分層結構
CAN遵循ISO制定的OSI(Open System Interconnection)七層模型,其結構體現了兩層:數據鏈路層、物理層。
CAN控制器:生成CAN幀并以二進制碼流的方式發送,在此過程中進行位填充、CRC校驗、應答檢測等;將接收到的二進制碼流進行解析并接收,在此過程中進行收發比對、去位填充、CRC校驗等。此外還需要進行沖突判斷、錯誤處理等。
CAN收發器:將二進制碼流轉換為差分信號發送,將差分信號轉換為二進制碼流接收。
CAN差分信號
CAN收發器邏輯信號和物理信號之間的轉換采用差分電平方式。
問:為什么CAN線是雙絞線?
答:雙絞線傳輸差分信號時受到共模信號干擾后,電位差不變,信號解碼正常。
雙絞線一般要求:芯截面積:0.35mm^2~0.5mm^2;絞距:33twist/m~50twist/m。
CAN終端電阻
為了保證CAN通信穩定,CAN總線兩端各添加一個終端電阻。終端電阻的作用有3個:
1、提高抗干擾能力,讓高頻低能量的信號迅速走掉;
2、確保總線快速進入隱性狀態,讓寄生電容的能量更快走掉;
3、提高信號質量,放置在總線的兩端,讓反射能量降低。
ISO 11898-2中規定終端電阻標稱值為120Ω(最小100Ω,最大130Ω),最低功耗是220mW。
對于有SPLIT引腳的CAN收發器,如常用的NXP TJA1040,終端電阻采用分離式(分裂式)連接,使用兩個6062Ω的電阻,中間一個小電容(45nF),這樣可以有效地降低電磁輻射,提高總線的抗干擾能力。
CAN波特率與位時間
位:bit,數據存儲的最小單位,每個0或1就是一個位。
字節:byte,計量存儲容量的一種計量單位,1字節=8位。
波特率是位速率,即發送節點在非同步的情況下發送的每秒鐘的位數。常見的有250kb/s、500kb/s等。
位時間顧名思義是發送一個位所需要的的時間,位時間=1/位速率,比如波特率250kb/s的位時間就是4us。
CAN數據幀格式
數據幀是五種報文幀(數據幀、遠程幀、錯誤幀、過載幀、幀間隔)里最復雜,也是最常用的。數據幀格式如下圖,平時使用我們看到的只有仲裁段的ID和數據段。
CAN 2.0A標準定義了標準幀,CAN 2.0B標準定義了擴展幀,支持CAN 2.0B的芯片可以兼容兩者幀格式。
標準幀和擴展幀的區別只在于ID,標準幀ID是11位,擴展幀ID是29位。
CAN負載率
CAN總線負載率是指在CAN總線上單位時間內實際傳送的位數和可以傳送的位數之比,即1s實際發送報文位數除以波特率。
CAN總線負載率宜控制在30%以內。實際整車負載率會控制在65%左右,對各模塊的要求是達到85%左右而不會出現錯誤幀。
為了降低總線負載,一些不重要或實時性不強的報文周期比較長,會低于采集或計算周期。
CAN的數據排列格式
從CANalyzer的DBC編輯器可以看出,每行表示一個字節的8個位,從右到左依次是bit0, bit1...bit7。一共有8行,從上到下依次是byte0, byte1...byte7。這也能看出數據段包含最多8個byte的數據,共64個bit(bit位序從byte0到byte7依次遞增排序)。
數據的傳輸規則:字節的高位(msb)先發送,字節的低位(lsb)最后發送。對于字節的發送而言,可以選擇高字節(MSB)先發(Byte 7先發),也可以低字節(LSB)先發(Byte 0先發),通常來說是用低字節先發。
數據排列有Intel和Motorola兩種格式,兩者只有在跨字節時才有區別。
按照byte0, byte1...的先后順序,Intel格式小字節在前,大字節在后,所以叫小端;Motorola格式大字節在前,小字節在后所以叫大端。
比如一個數據,byte 0是12,byte 1是34,Intel格式解析是0x12 34,Motorola格式解析是0x34 12。
CAN的CRC
CRC是循環冗余校驗(Cyclic Redundancy ),用來檢測或校驗數據傳輸或者保存后可能出現的錯誤。CRC的計算方法由ISO 11898-1規定。
如果接收方判斷該數據幀無效,則該幀報文棄之不用,發送節點會重新發送該報文,接收方收到后回復確認后結束。
CAN的Checksum
Checksum是校驗和,和CRC作用類似,也用來檢驗數據的準確性。
實際應用中,CRC并不能檢測到所有的差錯,為了盡可能保證數據傳輸的準確性,一般CAN通信里還增加了Checksum。
Checksum的計算方式沒有統一規定,各廠家可以根據自身需要制定。
Checksum的值一般會在數據段里發出來。
CAN的計數器
CRC和Checksum可以保證信號的有效性,而計數器可以保證信號的時效性。計數器一般叫Live Counter或Rolling Counter。發送節點每次在發送一幀報文后就對該Live Counter位加1。通常live Counter是4bit,那么live Counter就會在015(也有014)之間循環增加。
如果發送節點發送報文出了問題,從Live Counter波形上就會體現出現。
接收節點接收到報文后對計數器的值進行評估,當計數器值出現不連續的情況時,該幀報文的內容將被丟棄不再使用,直到計數器值重新連續為止。
CANFD的特點
CANFD(CAN with Flexible Data Rate)可以理解成CAN協議的升級版,只升級了協議,物理層未變。
CANFD與CAN最明顯的區別:可變速率、新的數據段長度。
1.可變速率
從控制段中的BRS位到ACK段之前(含CRC分界符)為可變速率(理論最大可達12Mb/s),其余部分為原CAN總線用的速率,比如某CANFD總線波特率為500kb/s+2Mb/s。
2.新的數據段長度
CAN-FD對數據段的長度作了很大的擴充,最大可達64字節。
CANFD同樣有標準幀和擴展幀之分,與CAN一致。
上圖兩個幀結構圖都是擴展幀,區別在CRC段。用CRC多項式區分:CRC_15用于CAN,CRC_17用于數據段不超過16字節的CANFD,CRC_21用于數據段超過16字節的CANFD。
CANFD的波特率
ISO沒有規定CANFD的波特率,考慮實際應用時通信穩定性,一些標準推薦了幾種波特率選擇。
SAE J2284-4:推薦汽車CANFD網絡應用(不同ECU通信)采用500kb/s+2Mb/s的波特率
SAE J2284-5:推薦汽車CANFD點對點通信應用(單個ECU刷寫)采用500kb/s+5Mb/s的波特率
CiA:推薦1Mb/s+5Mb/s,500kb/s+2Mb/s,250kb/s+2Mb/s
CANFD的優勢
CANFD支持更高的速率,可以更快地刷寫ECU;
CANFD在單個數據幀內傳送率可達64字節,避免了經常發生的數據分拆傳輸的狀況;
CANFD可重新再利用CAN線束和其它物理層面元件;
CANFD在電動車(更多的ECU)以及今后的動力CAN(更高的速率)上應用更有優勢;
CANFD上層應用層架構不需要改變,在原來基礎上擴展即可。
CANFD與CAN的兼容性問題
未來的CAN網絡,較長時間內都會存在著傳統CAN與CAN FD并存的情況。部分需解決速率問題的節點會率先采用CAN FD,其他對實時要求不高的節點仍然會使用傳統CAN。
CANFD和CAN節點之間的通信數據可以通過CANFD路由器轉發,類似于現在車上處于不同網絡的ECU之間的通信。
ECU和ABS之間通信由CANFD路由器將ECU與ABS的數據1:1轉發;ECU或者ABS與ECAS之間通信由CANFD路由器換為傳統CAN再轉發。
-
收發器
+關注
關注
10文章
3401瀏覽量
105874 -
控制器
+關注
關注
112文章
16214瀏覽量
177479 -
CAN通信
+關注
關注
5文章
93瀏覽量
17814 -
二進制
+關注
關注
2文章
794瀏覽量
41602 -
CRC校驗
+關注
關注
0文章
84瀏覽量
15190
發布評論請先 登錄
相關推薦
評論