范圍
ISO 11898-1主要描述了CAN總線的基本架構(gòu),定義了CAN在數(shù)據(jù)鏈路層的通信方式。重點內(nèi)容是數(shù)據(jù)鏈路層的兩個子層:邏輯鏈路控制(LLC)和介質(zhì)訪問控制(MAC)。
LLC和MAC工作使用很少接觸,我理解的是把CAN比作一道菜的話,MAC是廚師,LLC是傳菜員。
ISO 11898-1定義了兩種CAN,經(jīng)典CAN和CAN FD。
經(jīng)典CAN:波特率最高1Mbit/s,數(shù)據(jù)場每幀可達(dá)8個字節(jié)。
CAN FD:波特率最高超過1Mbit/s,數(shù)據(jù)場每幀可超過8個字節(jié)。
其實這里說波特率不是特別準(zhǔn)確,看單位就知道規(guī)范的說法是比特率或位速率,標(biāo)準(zhǔn)原文也是bit rates。1個波特表示一個符號,一個符號可以是多個bit組成,而1個比特就是一個bit,但口語大家都說波特率,也沒有歧義,就這么用吧。
波特率達(dá)到1Mbit/s時,最大傳輸距離為40m。
CAN的基本特點
CAN有如下特點:
— 基于優(yōu)先權(quán)的多主總線訪問;
多主方式是指網(wǎng)絡(luò)上的每一節(jié)點都可以發(fā)送信息,每一節(jié)點也都可以對某一信息的標(biāo)識符進(jìn)行檢測。優(yōu)先權(quán)是根據(jù)標(biāo)識符的值判定,ID值越小,優(yōu)先權(quán)越高。
— 基于內(nèi)容的無損仲裁;
仲裁機(jī)制可以保證不會丟失信息,也不會浪費時間。
— 所有幀以廣播方式傳輸;
每一節(jié)點發(fā)出信息,同一總線上的所有節(jié)點都可以選擇接收該信息。
— 通過接收濾波進(jìn)行多點傳輸;
接收器不判斷是哪個節(jié)點發(fā)送的信息,而是通過幀接收濾波的方法判斷該信息是否和接收器相關(guān)。發(fā)送也是一樣。
— 支持遠(yuǎn)程數(shù)據(jù)請求;
某個節(jié)點通過發(fā)送遠(yuǎn)程幀,請求另一個節(jié)點向自己回應(yīng)相應(yīng)的數(shù)據(jù)幀,這個數(shù)據(jù)幀標(biāo)識符和遠(yuǎn)程幀標(biāo)識符相同。
— 配置靈活;
只要標(biāo)識符數(shù)量夠,可以不做軟件或硬件的變更而增加節(jié)點。
— 全網(wǎng)內(nèi)數(shù)據(jù)具有一致性;
某一幀可以同時被所有節(jié)點接收,也可以同時不被所有節(jié)點接收。
— 錯誤檢測和錯誤通報;
總線數(shù)據(jù)校驗,有多種方式。
— 自動重傳仲裁失敗、未被確認(rèn)或在傳輸過程中被故障損壞的幀;
仲裁失敗會在下次總線空閑期間自動重發(fā)。錯誤幀在恢復(fù)時間之后,如果未再出錯,會被適時重發(fā)。
— 區(qū)分節(jié)點的臨時故障和永久故障,以及自動關(guān)閉故障節(jié)點。
故障節(jié)點會被斷開,會無法發(fā)送和無法接收任何幀。
CAN的消息幀
CAN在發(fā)送的時候,由LLC消息幀轉(zhuǎn)換為MAC消息幀;CAN在接收的時候,由MAC消息幀轉(zhuǎn)換為LLC消息幀。
LLC消息幀包括:標(biāo)識符、格式化場、數(shù)據(jù)長度場、LLC數(shù)據(jù)場。
MAC消息幀包括:幀起始、仲裁場、控制場、數(shù)據(jù)場、循環(huán)冗余碼校驗場(CRC場)、應(yīng)答場、幀結(jié)束。
一般好像只討論發(fā)出的MAC消息幀。消息幀分4種:數(shù)據(jù)幀、遠(yuǎn)程幀、錯誤幀、超載幀。數(shù)據(jù)幀最常見,也最復(fù)雜,以此為例說明幀結(jié)構(gòu)。
幀起始(SOF) :數(shù)據(jù)幀和遠(yuǎn)程幀的開始,只由一個顯性位組成,并且只在總線空閑時發(fā)送。
仲裁場 :標(biāo)準(zhǔn)幀中由11位標(biāo)識符(標(biāo)識符編碼從ID-28到ID-18)和RTR位組成;擴(kuò)展幀中由29位標(biāo)識符(標(biāo)識符編碼從ID-28到ID-18、ID-17到ID-0)、SRR位、IDE位和RTR位組成組成。
RTR位叫遠(yuǎn)程傳輸請求位,數(shù)據(jù)幀中RTR是顯性電平,遠(yuǎn)程幀中RTR是隱性電平。
SRR位叫替代傳輸請求位,在擴(kuò)展幀中始終是隱性電平。
IDE位叫標(biāo)識符擴(kuò)展位。標(biāo)準(zhǔn)幀也有IDE位,只不過是在控制場。IDE位在標(biāo)準(zhǔn)幀中是顯性電平,在擴(kuò)展幀中是隱性電平。
控制場 :總共6位。標(biāo)準(zhǔn)幀中,由IDE(顯性)、r0(顯性)和DLC組成;擴(kuò)展幀中,由r1(顯性)、r0(顯性)和DLC組成。
DLC叫數(shù)據(jù)長度碼,4位。DLC的值就是這一幀里數(shù)據(jù)場的長度。
數(shù)據(jù)場 :0~8個字節(jié),存儲著發(fā)送的數(shù)據(jù),即這一幀想要傳輸?shù)男畔ⅰ?/p>
CRC場 :循環(huán)冗余碼校驗場,由CRC序列和CRC界定符組成。
CRC序列是發(fā)送節(jié)點根據(jù)一個約定好的多項式算出來的校驗碼,這個多項式的系數(shù)根據(jù)這幀報文里的幀起始、仲裁場等數(shù)據(jù)確定。接收節(jié)點用同樣的方式計算。如果兩方算出來的校驗碼一致,則報文正常;不一致,則請求重新發(fā)送。
CRC_15用于經(jīng)典CAN,CRC_17用于數(shù)據(jù)場不超過16個字節(jié)的CANFD,CRC_21用于數(shù)據(jù)場超過16個字節(jié)的CANFD。
CRC界定符算是一個分界線,經(jīng)典CAN中為1個隱性位,CANFD中為1~2個隱性位。
應(yīng)答場(ACK場) :總共2位,由ACK槽和ACK界定符組成,兩個都是隱性位。
幀結(jié)束 :由7個隱性位組成。
其他3種消息幀與數(shù)據(jù)幀類似,只是結(jié)構(gòu)不太一樣。
遠(yuǎn)程幀由6個域組成:幀起始、仲裁場、控制場、CRC場、應(yīng)答場和幀結(jié)束。
錯誤幀由錯誤標(biāo)志和錯誤界定符組成。
超載幀由超載標(biāo)志和超載界定符組成。
-
CAN總線
+關(guān)注
關(guān)注
145文章
1955瀏覽量
130959 -
接收器
+關(guān)注
關(guān)注
14文章
2478瀏覽量
72080 -
ACK
+關(guān)注
關(guān)注
0文章
28瀏覽量
11160 -
CRC校驗
+關(guān)注
關(guān)注
0文章
84瀏覽量
15253 -
LLC電路
+關(guān)注
關(guān)注
1文章
43瀏覽量
7547
發(fā)布評論請先 登錄
相關(guān)推薦
評論