CAN匯流排之資料鏈路層

2021-08-18 01:46:04 字數 1724 閱讀 6822

目錄(?)

[+]大多數書籍一上來就是什麼計算機osi模型,什麼can模型對比osi模型。各種協議擺出來一大堆,讓人摸不著頭腦,這種東西說實在沒什麼用,底層鏈路層協議全部通過硬體實現了,你僅僅需要了解然後學會配置(驅動硬體)即可,沒必要花大篇幅去學習一大堆鬼東西。重點應該放在上層協議之上(例如應用層協議)。這些觀點可以適用於tcp/ip協議棧的學習。 

對於can主要理解以下兩點: 

1、can2.0-a和can2.0-b標準協議也就是所謂的鏈路層協議,這些都是通過硬體實現,咱們就大概了解協議,然後學會配置stm32或其他裝置相應的暫存器來實現can標準協議(驅動程式)。 

2、can應用層協議,這個才是重點,軟體實現。應用層協議其實可以自己定義,但是為了和其他公司的產品相容,咱們就必須使用一種國際上定義的標準應用層協議。這裡有很多,我們就學習使用比較多的canopen協議。

can有兩根線,canh和canl,硬體通過識別這兩根線上的電平來確定匯流排數值是顯性數值」0」,還是**數值」1」。如何識別及電平關係不需要明白,硬體給你處理。但是這裡必須清楚一點就是顯性和**同時傳送,最後匯流排數值為顯性數值0。

資料就是通過這種格式按位傳送出去。

匯流排上總共有以下5種不同型別的幀。

幀型別幀用途

資料幀節點傳送和接收資料的幀

遠端幀用於接收節點向具有相同id的傳送節點請求資料的幀

錯誤幀當檢測到錯誤向其他節點通知錯誤的幀

過載幀接收節點通知其他節點自己還沒準備好接收幀

幀間隔用於將資料幀和遠端幀與前面的幀分離開

錯誤幀由兩個不同的場組成,硬體實現和軟體無關。

暫時不考慮,這硬體實現。

暫時不考慮,硬體實現。

標準格式:11位識別符號,其餘和前面一樣 

擴充套件格式:11位基本id,18位擴充套件id。基本id定義擴充套件幀基本優先權。srr為替代遠端請求位,是隱性位。了解即可,不必追究。

can匯流排上節點沒有主從之分,所有節點級別都一樣,可以傳送也可以接收。只要匯流排空閒,傳送節點就可以傳送資料,傳送節點不會指定由哪個乙個節點接收,而是由接收節點自己過濾選擇是否接收含有該識別符號id的資料,就像收音機一樣,廣播台發出訊號都可以被聽眾收到,但是聽眾可以選擇自己喜歡的臺。

這裡說了很多,但是都是硬體已經幫助你完成了,這裡可以不用了解。直接忽略過去。。。。。

can協議規定了好幾種幀型別,但是對於我們應用來說,只有資料幀和遠端幀可以通過軟體程式設計來控制。(其他幾種幀都是由can控制器硬體實現的,我們也管不了)。而資料幀和遠端幀最大的區別在於:遠端幀沒有資料域。資料幀分為標準資料幀和擴充套件資料幀,它們之間最大的區別在於:仲裁場的不同。 

這裡直接參考《stm32 can傳送和接收過濾詳解》。

資料鏈路層

資料鏈路的定義 鏈路 計算機網路中相鄰節點的一段物理線路。資料鏈路 計算機網路中節點到節點相鄰的一段物理路線加上控制在這些路線上傳輸資料的協議。資料鏈路層解決的問題 對於計算機網路裡面的每一層,其實都是為了解決某乙個層面的問題而設計出來的,資料鏈路層也一樣 由於物理層只解決了訊號流在物理媒介的傳輸問...

資料鏈路層

首先撇清兩個概念 鏈路和資料鏈路。鏈路是指從乙個結點到另乙個結點的一段物理線路,而中間沒有任何其他的交換結點,在進行資料通訊時,兩個計算機之間的通訊路徑往往要經過許多段這樣的鏈路,可見鏈路只是一條路徑的組層部分,資料鏈路是除了一條物理鏈路外還需要加上一些必要的通訊協議來控制這些資料的傳輸。若把這些實...

資料鏈路層

資料鏈路層的主要任務是將上層交付的資料構造成位元流,然後交給下面的物理層。主要研究在乙個區域網內,分組怎麼從乙個主機傳送到另外乙個主機。位元流包括一些控制資訊和資料,基本單位是幀。資料鏈路 data link 除了物理線路外,還必須有通訊協議來控制這些資料的傳輸。若把實現這些協議的硬體和軟體加到鏈路...