STM32 CAN匯流排通訊學習筆記(一)

2021-08-21 08:30:49 字數 3097 閱讀 9336

can 是控制器區域網路(controller area network, can)的簡稱。can採用資料塊編碼的方式,資料塊根據幀的型別,能夠讓掛載在匯流排上的不同節點接收到相同的資料,再根據每個節點的配置對資訊進行選擇性處理(處理or丟棄)。can匯流排具有以下特點:

1. 多主控制

在匯流排空閒時,所有的單元都可以傳送訊息;具有csma/ca機制,即最先訪問匯流排的單元可獲得傳送權;多個單元同時傳送訊息時,優先順序高的標誌(id)單元可獲得傳送權,其中id並不是傳送的目的位址,而是表示訪問匯流排的訊息的優先順序,仲裁機制會對訊息id的每個位繼續比較,仲裁為高優先順序的單元可繼續傳送訊息,仲裁失敗的單元則停止傳送而進行接收工作。此處對can組網程式設計十分重要!!!

2. 系統柔軟性

由於與匯流排相連的單元沒對應的位址資訊,因此在程式設計時比較方便,增加匯流排上的單元,已連線的其他的單元的軟硬體以及應用層都不需要改變。

3. 通訊速度

在通訊距離小於40m時,速度最高1mbps,最遠可達10km,此時速率小於5kbps。同乙個網路中,所有的單元必須設定為同乙個通訊速度,類似於串列埠中要設定為相同的波特率。

4. 錯誤檢測功能、錯誤通知功能、錯誤恢復功能

(1)所有的單元都可以檢測錯誤;

(2)檢測出錯誤的單元會立即同時通知其他所有單元;

(3)正在傳送訊息的單元一旦檢測出錯誤,會強制結束當前的傳送。被強制結束傳送的單元會不斷反覆地重新傳送此訊息直到成功傳送為止。

5. 故障封閉

can匯流排可以判斷出錯誤的型別是匯流排上暫時的資料錯誤(如外部雜訊干擾)還是持續的資料錯誤(如單元內部故障、斷線等),由此功能,當匯流排上發生持續資料錯誤時,可將引起此故障的單元從匯流排上隔離出去。

6. 遠端資料請求

可通過傳送「遙控幀」,請求其他單元傳送資料。

7. 連線節點

可連線的單元理論上沒有限制,但連線單元數增加,應降低通訊速度。

can 協議經iso 標準化後有iso11898 標準和iso11519-2 標準兩種。iso11898 和iso11519-2 標準對於資料鏈路層的定義相同,但物理層不同。

​ 圖 1 iso11898、iso11519-2 的物理層特徵

由上圖可以看出,在iso11898中,can_h與can_l之差約為2.5v,對應顯性電平邏輯0,can_h與can_l之差為0v,隱性電平對應邏輯1。在iso11519中,can_h與can_l之差約為3v,對應顯性電平邏輯0,can_h與can_l之差為1.5v,隱性電平對應邏輯1。

​can協議包括下列**中的五種型別的幀,其中資料幀和遙控幀有標準格式和擴充套件格式,標準格式有11bit的id,擴充套件格式有29bit的id。幀用途

資料幀用於傳送單元向接收單元傳送資料的幀

遙控幀用於接收單元向具有相同 id 的傳送單元請求資料的幀

錯誤幀用於當檢測出錯誤時向其它單元通知錯誤的幀。

過載幀用於接收單元通知其尚未做好接收準備的幀。

幀間隔用於將資料幀及遙控幀與前面的幀分離開來的幀。

(1)資料幀

格式如下:

​ 圖 2 資料幀的構成

名稱描述

起始幀表示幀的開始,產生乙個bit的顯性電平

仲裁段表示幀的優先順序, 由識別符號(id)和傳送幀型別(rtr)組成

控制段表示資料的位元組數,由6個bit構成

資料段使用者傳送資料的內容,一幀可傳送0~8個位元組的資料

crc段

檢查資料幀傳輸是否正確(包括幀起始、仲裁段、控制段、資料)

ack段

確認並響應是否正常接收

幀結束表示資料幀結束

​上圖中d表示顯性電平,r表示隱性電平。標準格式中識別符號(id)有11bit,從id28到id18被依次傳送,禁止高7位都為隱性(禁止設定:id = 1111 111x ***);擴充套件格式的id有29bit,基本id從id28到id18,擴充套件id由id17到id0表示,禁止高7位都為隱性(禁止設定:id = 1111 111x ***)。

rtr位用於標識是否是遠端幀(0:資料幀;1:遠端幀);ide位用於識別符號選擇位(0:使用標準識別符號;1:使用擴充套件識別符號);srr位代替遠端請求位,為隱性位,代替了標準幀中的rtr位。

(2)遙控幀

​接收單元向傳送的單元請求傳送資料使用的幀,與資料幀的區別在於沒有資料段。其他幀在後面很少會用到,這裡不作過多描述。遙控幀格式如下:

圖 3 遙控幀的構成

(3)優先順序的決定

​在匯流排空閒態,最先傳送訊息的單元獲得優先傳送權。當多個單元同時傳送訊息時,各個傳送單元從仲裁段的第一位開始進行仲裁,連續輸出顯性電平最多的單元可繼續傳送。仲裁過程如下:

​資料幀和遙控幀的優先順序,具有相同id的資料幀和遙控幀在匯流排上競爭時,仲裁段的最後一位(rtr)為顯性位的資料幀具有優先權可繼續傳送。仲裁過程如下:

​標準格式與擴充套件格式的優先順序,標準格式id與具有相同id的遙控幀或者擴充套件格式的資料幀在匯流排上競爭時,標準格式的rtr 位為顯性位的具有優先權可繼續傳送。仲裁過程如下:

​以上介紹can通訊的特點以及主要兩個幀組成,仲裁過程等,對can通訊有了大概的了解。以上如有不足之處,望有識之士給予指正!

STM32CAN匯流排協議講解

月報 最近學習了stm32的can匯流排協議,使用的是野火的開發板 can 是controller area network 的縮寫 can bus 具有佈線簡單 典型的匯流排型結構 可最大限度的節約佈線與維護成本 穩定可靠 實時 抗干擾能力強 傳輸距離遠等特點,是一種成功的匯流排。不僅在汽車行業得...

STM32 CAN通訊問題

檢舉 2012 07 04 20 59 breath123 分類 工程技術科學 瀏覽974次 can通訊測試中 使能報文標示符過濾器按照標示符的內容進行比對過濾,擴充套件id不是如下的就拋棄掉,是的話,會存入fifo0。can filterinitstructure.can filteridhigh...

stm32 can通訊傳送解釋

uint8 t can transmit can typedef canx,cantxmsg txmessage else if canx tsr can tsr tme1 can tsr tme1 else if canx tsr can tsr tme2 can tsr tme2 else if...