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