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

常用的數(shù)據(jù)鏈路層協(xié)議

數(shù)據(jù)鏈路層的作用
什么是OSI模型數(shù)據(jù)鏈路層
基于無線HART協(xié)議的數(shù)據(jù)鏈路層協(xié)議模型設(shè)計

數(shù)據(jù)鏈路層選擇重傳協(xié)議優(yōu)化

數(shù)據(jù)鏈路層到底是什么_數(shù)據(jù)鏈路層工作原理是怎樣的

數(shù)據(jù)鏈路層常用成紙法有哪些_數(shù)據(jù)鏈路層的作用

如何使用ZPS-CANFD觀察CAN數(shù)據(jù)鏈路層的工作過程

評論