CAN總線通信之詳解數(shù)據(jù)幀(Data Frame)
前面的文章我們對CAN總線進(jìn)行了概括性的介紹,講解了CAN總線在汽車通信中的應(yīng)用,今天這篇文章深入探討CAN總線通信——介紹下CAN通信的數(shù)據(jù)幀(Data Frame)。

CAN總線以“幀(Frame)”形式進(jìn)行通信。“數(shù)據(jù)幀(Data Frame)”,顧名思義,是用來傳輸數(shù)據(jù)的。CAN總線的數(shù)據(jù)幀有標(biāo)準(zhǔn)格式(Standard Format)和擴(kuò)展格式(Extended Format)的區(qū)分,標(biāo)準(zhǔn)幀的格式如下圖:

數(shù)據(jù)幀可以分為七段:
1)幀起始(Start Of Frame-SOF): 1bit,顯性信號,表示數(shù)據(jù)幀(或遠(yuǎn)程幀)的開始。
2)仲裁段(Arbitration Field):包括兩部分:標(biāo)識符位(Identifier field-ID)和遠(yuǎn)程發(fā)送請求位(Remote Transfer Request-RTR)。
-
標(biāo)識符位,是一個功能性的地址(Functional address),CAN接收器通過標(biāo)識符來過濾數(shù)據(jù)幀。標(biāo)準(zhǔn)格式的數(shù)據(jù)幀的標(biāo)識符(CAN-ID)長度為11位(11 bits),ID10~ID0,ID10為最高權(quán)重位(MSB),ID0為最低權(quán)重位(LSB),按照ID10~ID0的順序進(jìn)行傳輸。CAN協(xié)議還規(guī)定:前7位最高權(quán)重位(ID10~ID4)不能都為“隱性”信號。
-
遠(yuǎn)程發(fā)送請求位,簡稱“RTR”,1 bit。雖然這個位的名字很長,但它的功能很簡單,用于區(qū)分該幀是數(shù)據(jù)幀還是遠(yuǎn)程幀:“顯性信號(0)”代表數(shù)據(jù)幀(Data Frame);“隱性信號(1)”代表遠(yuǎn)程幀(Remote Frame)。
3)控制段(Control Field):包括6個位(6 bits),分別是擴(kuò)展標(biāo)識符位(Identifier Extension bit-IDE,1 bit);保留位0(Reseved bit0-r0,1 bit);數(shù)據(jù)長度編碼位(Data Length Code-DLC,4 bits),如下圖:

-
擴(kuò)展標(biāo)識符位(IDE),用來表示該幀是標(biāo)準(zhǔn)格式還是擴(kuò)展格式;
-
保留位0(r0),保留,以后使用;
-
數(shù)據(jù)長度編碼位(DLC),4位(4 bits),包括DLC3~DLC0,表示該幀實際發(fā)送的數(shù)據(jù)的長度(以字節(jié)為單位);DLC的編碼規(guī)則如下:

其中“d”表示顯性信號;“r”表示隱性信號;
4) 數(shù)據(jù)段(Data Field):發(fā)送數(shù)據(jù)的內(nèi)容,最多8個字節(jié)。數(shù)據(jù)段與DLC的對應(yīng)關(guān)系如下圖:

5)循環(huán)校驗段(CRC Field):包括循環(huán)校驗序列(CRC Sequence)和界定符(Delimiter,DEL):
-
循環(huán)校驗序列(CRC Sequence),15 bits,用于校驗傳輸是否正確;
-
界定符(DEL),1 bit,隱性信號,表示循環(huán)校驗序列的結(jié)束;
6) 確認(rèn)段(ACK Field):包括確認(rèn)位(ACK SLOT)和界定符(Delimiter,DEL),表示確認(rèn)是否正常接收。
-
確認(rèn)位(ACK),1 bit,節(jié)點(diǎn)收到正確的CRC序列時,發(fā)送端的ACK位被置位;
-
界定符(DEL),1 bit,隱性信號;
7) 幀結(jié)束(End of Frame-EOF):7位(7 bits),隱性信號,表示幀的結(jié)束。
以上是標(biāo)準(zhǔn)格式的數(shù)據(jù)幀,下面來看看擴(kuò)展格式與標(biāo)準(zhǔn)格式有哪些不同,先看看下面這張圖:

仲裁段與控制段有所不同:
1)仲裁段(Arbitration Field):擴(kuò)展格式的仲裁段包括五個部分:
-
基本標(biāo)識符位(Base identifier-Base ID),11 bits,與標(biāo)準(zhǔn)格式的標(biāo)識符相同;
-
替代遠(yuǎn)程請求位(Substitute Remote Request Bit,SRR),1 bit,隱性信號;
-
擴(kuò)展位(Identifier Extension bit,IDE),1 bit,標(biāo)識擴(kuò)展幀還是標(biāo)準(zhǔn)幀;
-
擴(kuò)展標(biāo)識ID位(Extended Identifier, Extended ID),18 bits,存放擴(kuò)展標(biāo)識ID;
-
遠(yuǎn)程發(fā)送請求位(Remote Transmission Request,RTR),1 bit,數(shù)據(jù)幀中為顯性信號,遠(yuǎn)程幀中為隱性信號;
2)控制段(Control Field):6 bits,與標(biāo)準(zhǔn)幀不同的是:用保留1(r1)取代了標(biāo)準(zhǔn)幀的IDE,r0和DLC是一樣的;也就是說,擴(kuò)展幀有兩個保留位r1 和r0,這兩個保留位均需要發(fā)送顯性信號;
好了,關(guān)于CAN總線通信的數(shù)據(jù)幀就先介紹到這里了,相關(guān)參考文章:
為什么汽車電控單元間會選擇使用CAN總線進(jìn)行通信?
官網(wǎng)提供本文PDF版本下載:
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計算焓和比熱容 2020-08-31
-
Aspen Plus安裝過程中RMS License證書安裝失敗的解決方法,親測有效! 2021-10-15
-
CAD外部參照無法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
