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