CAN(Controller Area Network)總線協(xié)議的數(shù)據(jù)鏈路層是CAN通信中至關(guān)重要的一部分,它負(fù)責(zé)在物理層之上實(shí)現(xiàn)數(shù)據(jù)的可靠傳輸。數(shù)據(jù)鏈路層不僅管理著幀的同步、差錯(cuò)控制、流量控制等關(guān)鍵功能,還通過仲裁機(jī)制確保多個(gè)節(jié)點(diǎn)之間的高效通信。
一、CAN總線協(xié)議概述
CAN協(xié)議最早由德國Bosch公司于1983年提出,旨在解決汽車電子系統(tǒng)中的通信問題。隨著技術(shù)的發(fā)展,CAN協(xié)議逐漸被廣泛應(yīng)用于工業(yè)控制、醫(yī)療設(shè)備、智能家居等領(lǐng)域。CAN協(xié)議采用多主控制、廣播通信、非破壞性仲裁和錯(cuò)誤檢測與處理等機(jī)制,確保了通信的實(shí)時(shí)性、可靠性和靈活性。
二、數(shù)據(jù)鏈路層的組成
CAN總線協(xié)議的數(shù)據(jù)鏈路層主要由以下幾個(gè)部分組成:
1. MAC子層(媒體訪問控制子層)
MAC子層是CAN協(xié)議的關(guān)鍵組成部分,它主要負(fù)責(zé)將物理層接收到的信號組織成具有實(shí)際意義的信息,并管理錯(cuò)誤控制等傳輸流程。MAC子層的主要功能包括:
- 消息的幀化處理 :將待傳輸?shù)臄?shù)據(jù)封裝成符合CAN協(xié)議規(guī)范的幀格式。
- 仲裁 :通過非破壞性仲裁機(jī)制解決多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù)時(shí)的沖突。
- 應(yīng)答 :接收節(jié)點(diǎn)通過應(yīng)答機(jī)制確認(rèn)數(shù)據(jù)的正確接收。
- 錯(cuò)誤的檢測和報(bào)告 :檢測通信過程中的錯(cuò)誤,并通過錯(cuò)誤幀向其他節(jié)點(diǎn)報(bào)告。
2. LLC子層(邏輯鏈路控制子層)
雖然CAN協(xié)議標(biāo)準(zhǔn)中并沒有明確劃分LLC子層,但通常我們可以將幀過濾、報(bào)文重發(fā)等邏輯控制功能歸為LLC子層的范疇。LLC子層主要負(fù)責(zé):
- 報(bào)文過濾 :通過過濾器對接收的報(bào)文進(jìn)行過濾,只保留感興趣的報(bào)文。
- 報(bào)文重發(fā) :在檢測到通信錯(cuò)誤或未收到應(yīng)答時(shí),自動重發(fā)報(bào)文。
三、數(shù)據(jù)鏈路層的功能
1. 幀同步
幀同步是數(shù)據(jù)鏈路層的基本功能之一,用于確保發(fā)送和接收節(jié)點(diǎn)能夠正確識別信息幀的開始和結(jié)束。在CAN信息幀中,幀起始位(SOF)用于標(biāo)識信息幀的開始,而幀結(jié)束位(EOF)則用于標(biāo)識信息幀的結(jié)束。發(fā)送節(jié)點(diǎn)通過發(fā)送幀起始位來啟動一個(gè)幀的傳輸,接收節(jié)點(diǎn)則通過檢測幀起始位來實(shí)現(xiàn)幀同步。
2. 差錯(cuò)控制
差錯(cuò)控制是數(shù)據(jù)鏈路層的另一個(gè)重要功能,它包括錯(cuò)誤檢測和錯(cuò)誤糾正。CAN協(xié)議采用循環(huán)冗余校驗(yàn)(CRC)進(jìn)行錯(cuò)誤檢測,以確保數(shù)據(jù)的完整性。發(fā)送節(jié)點(diǎn)在發(fā)送數(shù)據(jù)前會生成CRC校驗(yàn)碼,并將其附加到數(shù)據(jù)場之后。接收節(jié)點(diǎn)在接收到數(shù)據(jù)后,會重新計(jì)算CRC校驗(yàn)碼,并與接收到的CRC校驗(yàn)碼進(jìn)行比較,以檢測數(shù)據(jù)是否出現(xiàn)錯(cuò)誤。如果檢測到錯(cuò)誤,接收節(jié)點(diǎn)會發(fā)送錯(cuò)誤幀來通知其他節(jié)點(diǎn)。
3. 流量控制
流量控制用于防止發(fā)送節(jié)點(diǎn)過快地發(fā)送數(shù)據(jù),導(dǎo)致接收節(jié)點(diǎn)無法處理。在CAN協(xié)議中,流量控制主要通過仲裁機(jī)制和應(yīng)答機(jī)制來實(shí)現(xiàn)。仲裁機(jī)制確保了在多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù)時(shí),具有較高優(yōu)先級的節(jié)點(diǎn)能夠優(yōu)先發(fā)送數(shù)據(jù)。而應(yīng)答機(jī)制則要求接收節(jié)點(diǎn)在接收到數(shù)據(jù)后發(fā)送應(yīng)答信號,以確認(rèn)數(shù)據(jù)的正確接收。如果發(fā)送節(jié)點(diǎn)未收到應(yīng)答信號,則會認(rèn)為通信失敗并可能重發(fā)報(bào)文。
4. 訪問控制
訪問控制是數(shù)據(jù)鏈路層的另一個(gè)關(guān)鍵功能,它用于協(xié)調(diào)多個(gè)節(jié)點(diǎn)之間的通信。在CAN協(xié)議中,訪問控制主要通過非破壞性仲裁機(jī)制實(shí)現(xiàn)。當(dāng)兩個(gè)或多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù)時(shí),它們會競爭總線的使用權(quán)。仲裁機(jī)制通過比較仲裁場的值來確定發(fā)送數(shù)據(jù)的優(yōu)先級。具有較高優(yōu)先級的節(jié)點(diǎn)可以繼續(xù)發(fā)送數(shù)據(jù),而具有較低優(yōu)先級的節(jié)點(diǎn)則需要等待直到高優(yōu)先級節(jié)點(diǎn)完成數(shù)據(jù)發(fā)送。
四、CAN信息幀的組成部分
CAN信息幀是CAN協(xié)議中最基本的數(shù)據(jù)傳輸單元,其組成部分包括:
- 幀起始位(SOF) :標(biāo)識信息幀的開始。
- 仲裁場 :用于確定發(fā)送數(shù)據(jù)的優(yōu)先級。仲裁場的長度可以是11位(標(biāo)準(zhǔn)幀)或29位(擴(kuò)展幀),仲裁場的值越小,優(yōu)先級越高。
- 控制場 :包括遠(yuǎn)程傳輸請求位(RTR)和標(biāo)識符擴(kuò)展位(IDE)。RTR位用于標(biāo)識數(shù)據(jù)幀是遠(yuǎn)程幀還是數(shù)據(jù)幀,IDE位用于標(biāo)識幀是標(biāo)準(zhǔn)幀還是擴(kuò)展幀。
- 數(shù)據(jù)場 :用于存儲實(shí)際傳輸?shù)臄?shù)據(jù)。標(biāo)準(zhǔn)幀的數(shù)據(jù)場長度為0-8字節(jié),擴(kuò)展幀的數(shù)據(jù)場長度為0-64字節(jié)。
- 校驗(yàn)場 :包括循環(huán)冗余校驗(yàn)(CRC)和CRC界定符。CRC用于檢測數(shù)據(jù)在傳輸過程中是否出現(xiàn)錯(cuò)誤,CRC界定符用于標(biāo)識CRC校驗(yàn)的結(jié)束。
- 應(yīng)答場 :包括應(yīng)答插槽和應(yīng)答界定符。應(yīng)答插槽用于接收節(jié)點(diǎn)發(fā)送應(yīng)答信號,應(yīng)答界定符用于標(biāo)識應(yīng)答場的結(jié)束。
- 幀結(jié)束位(EOF) :標(biāo)識信息幀的結(jié)束。
五、錯(cuò)誤處理機(jī)制
CAN協(xié)議定義了多種錯(cuò)誤類型,包括CRC錯(cuò)誤、格式錯(cuò)誤、應(yīng)答錯(cuò)誤、位發(fā)送錯(cuò)誤和位填充錯(cuò)誤等。當(dāng)發(fā)生這些錯(cuò)誤時(shí),發(fā)送節(jié)點(diǎn)或接收節(jié)點(diǎn)會發(fā)送錯(cuò)誤幀來通知其他節(jié)點(diǎn)。為了防止某些節(jié)點(diǎn)自身出錯(cuò)而一直發(fā)送錯(cuò)誤幀干擾其他節(jié)點(diǎn)通信,CAN協(xié)議還規(guī)定了節(jié)點(diǎn)的三種狀態(tài)及行為:主動錯(cuò)誤狀態(tài)、被動錯(cuò)誤狀態(tài)和Bus Off狀態(tài)。這些狀態(tài)根據(jù)接收錯(cuò)誤計(jì)數(shù)器(REC)和發(fā)送錯(cuò)誤計(jì)數(shù)器(TEC)的值進(jìn)行轉(zhuǎn)換。
六、總結(jié)
CAN總線協(xié)議的數(shù)據(jù)鏈路層是實(shí)現(xiàn)CAN通信的關(guān)鍵部分,它負(fù)責(zé)在物理層之上實(shí)現(xiàn)數(shù)據(jù)的可靠傳輸。通過幀同步、差錯(cuò)控制、流量控制和訪問控制等功能,CAN協(xié)議確保了多個(gè)節(jié)點(diǎn)之間的高效、可靠通信。同時(shí),CAN協(xié)議還提供了完善的錯(cuò)誤處理機(jī)制來應(yīng)對通信過程中可能出現(xiàn)的各種問題。這些功能和機(jī)制共同構(gòu)成了CAN總線協(xié)議強(qiáng)大的通信能力,使其在眾多領(lǐng)域得到了廣泛應(yīng)用。
-
CAN總線
+關(guān)注
關(guān)注
145文章
1898瀏覽量
130333 -
數(shù)據(jù)鏈路層
+關(guān)注
關(guān)注
0文章
52瀏覽量
11970 -
總線協(xié)議
+關(guān)注
關(guān)注
0文章
111瀏覽量
14811
發(fā)布評論請先 登錄
相關(guān)推薦
評論