CAN(Controller Area Network)總線協(xié)議的數(shù)據(jù)鏈路層是CAN通信中至關(guān)重要的一部分,它負(fù)責(zé)在物理層之上實(shí)現(xiàn)數(shù)據(jù)的可靠傳輸。數(shù)據(jù)鏈路層不僅管理著幀的同步、差錯控制、流量控制等關(guān)鍵功能,還通過仲裁機(jī)制確保多個節(jié)點(diǎn)之間的高效通信。
一、CAN總線協(xié)議概述
CAN協(xié)議最早由德國Bosch公司于1983年提出,旨在解決汽車電子系統(tǒng)中的通信問題。隨著技術(shù)的發(fā)展,CAN協(xié)議逐漸被廣泛應(yīng)用于工業(yè)控制、醫(yī)療設(shè)備、智能家居等領(lǐng)域。CAN協(xié)議采用多主控制、廣播通信、非破壞性仲裁和錯誤檢測與處理等機(jī)制,確保了通信的實(shí)時性、可靠性和靈活性。
二、數(shù)據(jù)鏈路層的組成
CAN總線協(xié)議的數(shù)據(jù)鏈路層主要由以下幾個部分組成:
1. MAC子層(媒體訪問控制子層)
MAC子層是CAN協(xié)議的關(guān)鍵組成部分,它主要負(fù)責(zé)將物理層接收到的信號組織成具有實(shí)際意義的信息,并管理錯誤控制等傳輸流程。MAC子層的主要功能包括:
- 消息的幀化處理 :將待傳輸?shù)臄?shù)據(jù)封裝成符合CAN協(xié)議規(guī)范的幀格式。
- 仲裁 :通過非破壞性仲裁機(jī)制解決多個節(jié)點(diǎn)同時發(fā)送數(shù)據(jù)時的沖突。
- 應(yīng)答 :接收節(jié)點(diǎn)通過應(yīng)答機(jī)制確認(rèn)數(shù)據(jù)的正確接收。
- 錯誤的檢測和報(bào)告 :檢測通信過程中的錯誤,并通過錯誤幀向其他節(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ā) :在檢測到通信錯誤或未收到應(yīng)答時,自動重發(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ā)送幀起始位來啟動一個幀的傳輸,接收節(jié)點(diǎn)則通過檢測幀起始位來實(shí)現(xiàn)幀同步。
2. 差錯控制
差錯控制是數(shù)據(jù)鏈路層的另一個重要功能,它包括錯誤檢測和錯誤糾正。CAN協(xié)議采用循環(huán)冗余校驗(yàn)(CRC)進(jìn)行錯誤檢測,以確保數(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)錯誤。如果檢測到錯誤,接收節(jié)點(diǎn)會發(fā)送錯誤幀來通知其他節(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ī)制確保了在多個節(jié)點(diǎn)同時發(fā)送數(shù)據(jù)時,具有較高優(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ù)鏈路層的另一個關(guān)鍵功能,它用于協(xié)調(diào)多個節(jié)點(diǎn)之間的通信。在CAN協(xié)議中,訪問控制主要通過非破壞性仲裁機(jī)制實(shí)現(xiàn)。當(dāng)兩個或多個節(jié)點(diǎn)同時發(fā)送數(shù)據(jù)時,它們會競爭總線的使用權(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)錯誤,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é)束。
五、錯誤處理機(jī)制
CAN協(xié)議定義了多種錯誤類型,包括CRC錯誤、格式錯誤、應(yīng)答錯誤、位發(fā)送錯誤和位填充錯誤等。當(dāng)發(fā)生這些錯誤時,發(fā)送節(jié)點(diǎn)或接收節(jié)點(diǎn)會發(fā)送錯誤幀來通知其他節(jié)點(diǎn)。為了防止某些節(jié)點(diǎn)自身出錯而一直發(fā)送錯誤幀干擾其他節(jié)點(diǎn)通信,CAN協(xié)議還規(guī)定了節(jié)點(diǎn)的三種狀態(tài)及行為:主動錯誤狀態(tài)、被動錯誤狀態(tài)和Bus Off狀態(tài)。這些狀態(tài)根據(jù)接收錯誤計(jì)數(shù)器(REC)和發(fā)送錯誤計(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ù)的可靠傳輸。通過幀同步、差錯控制、流量控制和訪問控制等功能,CAN協(xié)議確保了多個節(jié)點(diǎn)之間的高效、可靠通信。同時,CAN協(xié)議還提供了完善的錯誤處理機(jī)制來應(yīng)對通信過程中可能出現(xiàn)的各種問題。這些功能和機(jī)制共同構(gòu)成了CAN總線協(xié)議強(qiáng)大的通信能力,使其在眾多領(lǐng)域得到了廣泛應(yīng)用。
-
CAN總線
+關(guān)注
關(guān)注
145文章
2043瀏覽量
135214 -
數(shù)據(jù)鏈路層
+關(guān)注
關(guān)注
0文章
63瀏覽量
12409 -
總線協(xié)議
+關(guān)注
關(guān)注
0文章
168瀏覽量
15614
發(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è)計(jì)
數(shù)據(jù)鏈路層選擇重傳協(xié)議優(yōu)化
數(shù)據(jù)鏈路層到底是什么_數(shù)據(jù)鏈路層工作原理是怎樣的
數(shù)據(jù)鏈路層常用成紙法有哪些_數(shù)據(jù)鏈路層的作用
如何使用ZPS-CANFD觀察CAN數(shù)據(jù)鏈路層的工作過程
CAN總線協(xié)議的數(shù)據(jù)鏈路層有哪些部分
評論