CAN(Controller Area Network)總線協議的數據鏈路層是CAN通信中至關重要的一部分,它負責在物理層之上實現數據的可靠傳輸。數據鏈路層不僅管理著幀的同步、差錯控制、流量控制等關鍵功能,還通過仲裁機制確保多個節點之間的高效通信。
一、CAN總線協議概述
CAN協議最早由德國Bosch公司于1983年提出,旨在解決汽車電子系統中的通信問題。隨著技術的發展,CAN協議逐漸被廣泛應用于工業控制、醫療設備、智能家居等領域。CAN協議采用多主控制、廣播通信、非破壞性仲裁和錯誤檢測與處理等機制,確保了通信的實時性、可靠性和靈活性。
二、數據鏈路層的組成
CAN總線協議的數據鏈路層主要由以下幾個部分組成:
1. MAC子層(媒體訪問控制子層)
MAC子層是CAN協議的關鍵組成部分,它主要負責將物理層接收到的信號組織成具有實際意義的信息,并管理錯誤控制等傳輸流程。MAC子層的主要功能包括:
- 消息的幀化處理 :將待傳輸的數據封裝成符合CAN協議規范的幀格式。
- 仲裁 :通過非破壞性仲裁機制解決多個節點同時發送數據時的沖突。
- 應答 :接收節點通過應答機制確認數據的正確接收。
- 錯誤的檢測和報告 :檢測通信過程中的錯誤,并通過錯誤幀向其他節點報告。
2. LLC子層(邏輯鏈路控制子層)
雖然CAN協議標準中并沒有明確劃分LLC子層,但通常我們可以將幀過濾、報文重發等邏輯控制功能歸為LLC子層的范疇。LLC子層主要負責:
- 報文過濾 :通過過濾器對接收的報文進行過濾,只保留感興趣的報文。
- 報文重發 :在檢測到通信錯誤或未收到應答時,自動重發報文。
三、數據鏈路層的功能
1. 幀同步
幀同步是數據鏈路層的基本功能之一,用于確保發送和接收節點能夠正確識別信息幀的開始和結束。在CAN信息幀中,幀起始位(SOF)用于標識信息幀的開始,而幀結束位(EOF)則用于標識信息幀的結束。發送節點通過發送幀起始位來啟動一個幀的傳輸,接收節點則通過檢測幀起始位來實現幀同步。
2. 差錯控制
差錯控制是數據鏈路層的另一個重要功能,它包括錯誤檢測和錯誤糾正。CAN協議采用循環冗余校驗(CRC)進行錯誤檢測,以確保數據的完整性。發送節點在發送數據前會生成CRC校驗碼,并將其附加到數據場之后。接收節點在接收到數據后,會重新計算CRC校驗碼,并與接收到的CRC校驗碼進行比較,以檢測數據是否出現錯誤。如果檢測到錯誤,接收節點會發送錯誤幀來通知其他節點。
3. 流量控制
流量控制用于防止發送節點過快地發送數據,導致接收節點無法處理。在CAN協議中,流量控制主要通過仲裁機制和應答機制來實現。仲裁機制確保了在多個節點同時發送數據時,具有較高優先級的節點能夠優先發送數據。而應答機制則要求接收節點在接收到數據后發送應答信號,以確認數據的正確接收。如果發送節點未收到應答信號,則會認為通信失敗并可能重發報文。
4. 訪問控制
訪問控制是數據鏈路層的另一個關鍵功能,它用于協調多個節點之間的通信。在CAN協議中,訪問控制主要通過非破壞性仲裁機制實現。當兩個或多個節點同時發送數據時,它們會競爭總線的使用權。仲裁機制通過比較仲裁場的值來確定發送數據的優先級。具有較高優先級的節點可以繼續發送數據,而具有較低優先級的節點則需要等待直到高優先級節點完成數據發送。
四、CAN信息幀的組成部分
CAN信息幀是CAN協議中最基本的數據傳輸單元,其組成部分包括:
- 幀起始位(SOF) :標識信息幀的開始。
- 仲裁場 :用于確定發送數據的優先級。仲裁場的長度可以是11位(標準幀)或29位(擴展幀),仲裁場的值越小,優先級越高。
- 控制場 :包括遠程傳輸請求位(RTR)和標識符擴展位(IDE)。RTR位用于標識數據幀是遠程幀還是數據幀,IDE位用于標識幀是標準幀還是擴展幀。
- 數據場 :用于存儲實際傳輸的數據。標準幀的數據場長度為0-8字節,擴展幀的數據場長度為0-64字節。
- 校驗場 :包括循環冗余校驗(CRC)和CRC界定符。CRC用于檢測數據在傳輸過程中是否出現錯誤,CRC界定符用于標識CRC校驗的結束。
- 應答場 :包括應答插槽和應答界定符。應答插槽用于接收節點發送應答信號,應答界定符用于標識應答場的結束。
- 幀結束位(EOF) :標識信息幀的結束。
五、錯誤處理機制
CAN協議定義了多種錯誤類型,包括CRC錯誤、格式錯誤、應答錯誤、位發送錯誤和位填充錯誤等。當發生這些錯誤時,發送節點或接收節點會發送錯誤幀來通知其他節點。為了防止某些節點自身出錯而一直發送錯誤幀干擾其他節點通信,CAN協議還規定了節點的三種狀態及行為:主動錯誤狀態、被動錯誤狀態和Bus Off狀態。這些狀態根據接收錯誤計數器(REC)和發送錯誤計數器(TEC)的值進行轉換。
六、總結
CAN總線協議的數據鏈路層是實現CAN通信的關鍵部分,它負責在物理層之上實現數據的可靠傳輸。通過幀同步、差錯控制、流量控制和訪問控制等功能,CAN協議確保了多個節點之間的高效、可靠通信。同時,CAN協議還提供了完善的錯誤處理機制來應對通信過程中可能出現的各種問題。這些功能和機制共同構成了CAN總線協議強大的通信能力,使其在眾多領域得到了廣泛應用。
-
CAN總線
+關注
關注
145文章
1955瀏覽量
131097 -
數據鏈路層
+關注
關注
0文章
58瀏覽量
12035 -
總線協議
+關注
關注
0文章
117瀏覽量
14899
發布評論請先 登錄
相關推薦
TLP的數據鏈路層組成與操作
CAN總線的系統架構
介紹車用CAN通訊的基礎知識,數據鏈路層部分
數據鏈路層的作用
什么是OSI模型數據鏈路層
基于無線HART協議的數據鏈路層協議模型設計
![基于無線HART<b class='flag-5'>協議</b>的<b class='flag-5'>數據鏈路層</b><b class='flag-5'>協議</b>模型設計](https://file1.elecfans.com//web2/M00/A5/B0/wKgZomUMOZqAFi2xAAA1jEBYTRc178.jpg)
數據鏈路層選擇重傳協議優化
![<b class='flag-5'>數據鏈路層</b>選擇重傳<b class='flag-5'>協議</b>優化](https://file.elecfans.com/web2/M00/49/5B/poYBAGKhwKaAeP8rAAATwg_Itow748.jpg)
數據鏈路層到底是什么_數據鏈路層工作原理是怎樣的
![<b class='flag-5'>數據鏈路層</b>到底是什么_<b class='flag-5'>數據鏈路層</b>工作原理是怎樣的](https://file.elecfans.com/web1/M00/48/4A/o4YBAFqow52AEtsVAABZGPFmLyk214.jpg)
數據鏈路層常用成紙法有哪些_數據鏈路層的作用
![<b class='flag-5'>數據鏈路層</b>常用成紙法<b class='flag-5'>有</b>哪些_<b class='flag-5'>數據鏈路層</b>的作用](https://file.elecfans.com/web1/M00/48/4C/pIYBAFqoyG-AIgYEAABcVQ4leSE629.jpg)
評論