CAN(Controller Area Network)是一種用于汽車和工業(yè)控制系統(tǒng)的通信協(xié)議。它具有高可靠性、實時性和靈活性等特點,被廣泛應(yīng)用于汽車、工業(yè)、醫(yī)療等領(lǐng)域。CAN數(shù)據(jù)幀是CAN通信中的基本數(shù)據(jù)單位,它由多個字段組成,每個字段都有其特定的作用。
- 幀起始位(SOF)
幀起始位是CAN數(shù)據(jù)幀的第一個位,用于表示一個新幀的開始。在CAN總線上,幀起始位是一個顯式的位,其值為“0”,用于區(qū)分?jǐn)?shù)據(jù)幀和空閑位。幀起始位的出現(xiàn),通知CAN控制器和CAN節(jié)點,一個新的數(shù)據(jù)幀即將開始傳輸。
- 仲裁場(Arbitration Field)
仲裁場是CAN數(shù)據(jù)幀中用于確定數(shù)據(jù)幀優(yōu)先級的部分。它由11位標(biāo)識符(ID)組成,其中最高位為主導(dǎo)位(DOM,Dominant Bit),其余10位為從屬位(SOM,Subordinate Bit)。在CAN總線上,多個節(jié)點可以同時發(fā)送數(shù)據(jù)幀,但只有一個數(shù)據(jù)幀能夠成功傳輸。仲裁場的作用就是確定哪個數(shù)據(jù)幀具有更高的優(yōu)先級,從而能夠成功傳輸。
在仲裁過程中,主導(dǎo)位的優(yōu)先級高于從屬位。如果兩個數(shù)據(jù)幀的主導(dǎo)位相同,那么比較它們的從屬位,從屬位較小的數(shù)據(jù)幀具有更高的優(yōu)先級。如果兩個數(shù)據(jù)幀的主導(dǎo)位和從屬位都相同,那么它們具有相同的優(yōu)先級,這種情況下,哪個數(shù)據(jù)幀能夠成功傳輸是隨機(jī)的。
- 控制場(Control Field)
控制場是CAN數(shù)據(jù)幀中用于描述數(shù)據(jù)幀類型和長度的部分。它由6位組成,其中最低位為幀類型位(FT,F(xiàn)rame Type),其余5位為數(shù)據(jù)長度碼(DLC,Data Length Code)。
幀類型位用于區(qū)分?jǐn)?shù)據(jù)幀和遠(yuǎn)程幀。數(shù)據(jù)幀用于傳輸實際的數(shù)據(jù),而遠(yuǎn)程幀用于請求其他節(jié)點發(fā)送數(shù)據(jù)。當(dāng)幀類型位為“0”時,表示這是一個數(shù)據(jù)幀;當(dāng)幀類型位為“1”時,表示這是一個遠(yuǎn)程幀。
數(shù)據(jù)長度碼用于描述數(shù)據(jù)幀中數(shù)據(jù)場的長度。DLC的取值范圍為015,表示數(shù)據(jù)場的長度為08字節(jié)。當(dāng)DLC為0時,表示數(shù)據(jù)場為空;當(dāng)DLC為18時,表示數(shù)據(jù)場的長度為18字節(jié);當(dāng)DLC為9~15時,表示數(shù)據(jù)場的長度為8字節(jié)。
- 數(shù)據(jù)場(Data Field)
數(shù)據(jù)場是CAN數(shù)據(jù)幀中用于傳輸實際數(shù)據(jù)的部分。它的大小由控制場中的數(shù)據(jù)長度碼(DLC)確定。數(shù)據(jù)場可以包含0~8字節(jié)的數(shù)據(jù),每個字節(jié)由8位組成。數(shù)據(jù)場可以傳輸各種類型的數(shù)據(jù),如傳感器數(shù)據(jù)、控制命令等。
- CRC場(CRC Field)
CRC場是CAN數(shù)據(jù)幀中用于錯誤檢測的部分。它由15位組成,其中前12位為CRC序列(CRC Sequence),后3位為CRC界定符(CRC Delimiter)。CRC序列是通過對數(shù)據(jù)幀中的數(shù)據(jù)進(jìn)行循環(huán)冗余校驗(Cyclic Redundancy Check)計算得到的,用于檢測數(shù)據(jù)在傳輸過程中是否出現(xiàn)錯誤。CRC界定符是一個固定的位模式,用于標(biāo)識CRC序列的結(jié)束。
ACK場是CAN數(shù)據(jù)幀中用于確認(rèn)數(shù)據(jù)幀成功接收的部分。它由2位組成,其中第1位為應(yīng)答位(ACK Slot),第2位為應(yīng)答界定符(ACK Delimiter)。當(dāng)接收節(jié)點成功接收并校驗數(shù)據(jù)幀后,它會在ACK場的應(yīng)答位發(fā)送一個顯式的“0”位,表示數(shù)據(jù)幀已被成功接收。發(fā)送節(jié)點檢測到這個應(yīng)答信號后,會認(rèn)為數(shù)據(jù)幀傳輸成功。
- EOF場(End of Frame Field)
EOF場是CAN數(shù)據(jù)幀的最后一個部分,用于表示數(shù)據(jù)幀的結(jié)束。它由7個隱式的“1”位組成,用于將數(shù)據(jù)幀與其他幀或空閑位區(qū)分開來。當(dāng)CAN控制器或節(jié)點檢測到EOF場時,它們會認(rèn)為當(dāng)前數(shù)據(jù)幀傳輸結(jié)束,準(zhǔn)備接收下一個數(shù)據(jù)幀或進(jìn)入空閑狀態(tài)。
總結(jié):
CAN數(shù)據(jù)幀由多個字段組成,每個字段都有其特定的作用。幀起始位表示數(shù)據(jù)幀的開始;仲裁場用于確定數(shù)據(jù)幀的優(yōu)先級;控制場描述數(shù)據(jù)幀的類型和長度;數(shù)據(jù)場傳輸實際數(shù)據(jù);CRC場用于錯誤檢測;ACK場用于確認(rèn)數(shù)據(jù)幀的成功接收;EOF場表示數(shù)據(jù)幀的結(jié)束。這些字段共同保證了CAN數(shù)據(jù)幀的可靠性、實時性和靈活性,使其成為汽車和工業(yè)控制系統(tǒng)中廣泛使用的通信協(xié)議。
-
通信協(xié)議
+關(guān)注
關(guān)注
28文章
1033瀏覽量
41151 -
CAN
+關(guān)注
關(guān)注
57文章
2919瀏覽量
467716 -
工業(yè)控制系統(tǒng)
+關(guān)注
關(guān)注
3文章
114瀏覽量
16870 -
數(shù)據(jù)幀
+關(guān)注
關(guān)注
0文章
49瀏覽量
6953
發(fā)布評論請先 登錄
為什么OLED初始化的時候要這么多命令?
為什么要搞這么多架構(gòu)
一幀CAN報文多少字節(jié)
CAN協(xié)議數(shù)據(jù)幀的介紹

評論