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

STM32 CAN通信協(xié)議
CAN串行通信協(xié)議
CAN通信協(xié)議簡析
CAN協(xié)議特點簡介
CAN總線通信協(xié)議的分析和實現(xiàn) CAN總線通信協(xié)議以及其實現(xiàn)方法

CAN和CANFD協(xié)議簡介(上)

評論