轉:CAN總線學習筆記(1)- CAN基礎知識

轉自:https://blog.csdn.net/weixin_40528417/article/details/79476186

依照瑞薩公司的《CAN入門書》的組織思路來學習CAN通信的相關知識,並結合網上相關資料以及學習過程中的領悟整理成筆記。好記性不如爛筆頭,加油!


1 CAN的一些基本概念

1.1 什麼是CAN總線

CAN 是 Controller Area Network 的縮寫,是 ISO 國際標準化的串行通信協議。通俗來講,CAN總線就是一種傳輸數據的線,用於在不同的ECU之間傳輸數據。
CAN總線有兩個ISO國際標準:ISO11898 和 ISO11519。其中:

  • ISO11898 定義了通信速率爲 125 kbps~1 Mbps 的高速 CAN 通信標準,屬於閉環總線,傳輸速率可達1Mbps,總線長度 ≤ 40米。
  • ISO11519 定義了通信速率爲 10~125 kbps 的低速 CAN 通信標準,屬於開環總線,傳輸速率爲40kbps時,總線長度可達1000米。
Tips: <總線的傳輸速率>:又稱爲總線的通信速率,指的是位速率。或稱爲比特率(和波特率不是一回事),表示的是:單位時間內,通信線路上傳輸的二進制位的數量,其基本單位是 bps 或者 b/s (bit per second)。

1.2 CAN的拓撲結構

下圖中,左邊是高速CAN總線的拓撲結構,右邊是低速CAN總線的拓撲結構。
CAN拓撲結構
如圖中所示,CAN總線包括CAN_H 和 CAN_L 兩根線。節點通過CAN控制器CAN收發器連接到CAN總線上。

Tips :通常來講,ECU內部集成了CAN控制器和CAN收發器,但是也有沒集成的,需要自己外加。

1.3 CAN信號表示

在CAN總線上,利用CAN_H和CAN_L兩根線上的電位差來表示CAN信號。CAN總線上的電位差分爲顯性電平隱性電平。其中顯性電平爲邏輯0隱性電平爲邏輯1
ISO11898標準(125kbps ~ 1Mbps)和ISO11519標準(10kbps ~ 125kbps)中CAN信號的表示分別如下所示:
CAN信號表示

1.4 CAN信號傳輸

發送過程:
CAN控制器將CPU傳來的信號轉換爲邏輯電平(即邏輯0-顯性電平或者邏輯1-隱性電平)。CAN發射器接收邏輯電平之後,再將其轉換爲差分電平輸出到CAN總線上。
CAN信號傳輸
接收過程:
CAN接收器將CAN_H 和 CAN_L 線上傳來的差分電平轉換爲邏輯電平輸出到CAN控制器,CAN控制器再把該邏輯電平轉化爲相應的信號發送到CPU上。
CAN接收器
概括的講:

  • 發送方通過使總線電平發生變化,將其信息傳遞到CAN總線上。
  • 接收方通過監聽總線電平,將總線上的消息讀入自己的接收器。

2 CAN通信的特點

2.1 多主工作方式

所謂多主工作方式,指的是:總線上的所有節點沒有主從之分,大家都處於平等的地位。反應在數據傳輸上,即是:在總線空閒狀態,任意節點都可以向總線上發送消息。

Tips: <總線空閒狀態>:當總線上的上出現連續的11位隱性電平,那麼總線就處於空閒狀態。也就是說對於任意一個節點而言,只要它監聽到總線上連續出現了11位隱性電平,那麼該節點就會認爲總線當前處於空閒狀態,它就會立即向總線上發送自己的報文。
至於爲什麼連續出現11位隱性電平,就可以判定+總線處於空閒狀態,這個問題可以結合CAN協議的幀結構來進行理解。

在多主工作方式下:

  • 最先向總線發送消息的節點獲得總線的發送權;
  • 當多個節點同時向總線發送消息時,所發送消息的優先權高的那個節點獲得總線的發送權。
    例如:Node_A和Node_B同時向總線發送各自的消息Msg_1和Msg_2,如果Msg_1的優先級比Msg_2高,那麼Node_A就獲得了總線的發送權。

2.2 非破壞性位仲裁機制

在CAN協議中,所有的消息都以固定的幀格式發送。當多個節點同時向總線發送消息時,對各個消息的標識符(即ID號)進行逐位仲裁,如果某個節點發送的消息仲裁獲勝,那麼這個節點將獲取總線的發送權,仲裁失敗的節點則立即停止發送並轉變爲監聽(接收)狀態。
例如:Node_A和Node_B同時向總線發送各自的消息Msg_1和Msg_2,那麼對Msg_1的ID號ID_1和Msg_2的ID號ID_2進行逐位仲裁,如果仲裁結果是:ID_1的優先級比ID_2高,那麼Msg_1在仲裁中獲勝,於是發出Msg_1這條報文的節點Node_A就獲得了總線的發送權。同時,Msg_2在仲裁中失敗,於是Node_B就轉換到監聽總線電平的狀態。

這種仲裁機制既不會造成已發送數據的延遲,也不會破壞已經發送的數據,所以稱爲非破壞性仲裁機制。這種仲裁方式的實現機制參見本系列筆記的第二篇CAN協議數據幀與遙控幀中的介紹。

2.3 系統的柔性

CAN總線上的節點沒有“地址”的概念,因此在總線上增加節點時,不會對總線上已有節點的軟硬件及應用層造成影響。

2.4 通信速度

在同一條CAN線上,所有節點的通信速度(位速率)必須相同,如果兩條不同通信速度總線上的節點想要實現信息交互,必須通過網關。
例如:汽車上一般有兩條CAN總線:500kbps的驅動系統CAN總線和125kbps的舒適系統CAN總線,如果驅動系統CAN總線上的發動機節點要把自己的轉速信息發送給舒適系統CAN總線上的轉速錶節點,那麼這兩條總線必須通過網關相連。

2.5 數據傳輸方式

CAN總線可以實現一對一,一對多以及廣播的數據傳輸方式,這依賴於驗收濾波技術。驗收濾波技術的實現機制參見本系列筆記的第二篇CAN協議幀結構中的介紹。

2.6 遠程數據請求

某個節點Node_A可以通過發送“遙控幀”到總線上的方式,請求某個節點Node_B來發送由該遙控幀所指定的報文。具體實現方式參見本系列筆記的第二篇CAN協議幀結構中的介紹。

2.7 錯誤檢測、錯誤通知、錯誤恢復功能

  • 所有的節點都可以檢測出錯誤(錯誤檢測功能);
  • 檢測出錯誤的節點會立即通知總線上其它所有的節點(錯誤通知功能);
  • 正在發送消息的節點,如果檢測到錯誤,會立即停止當前的發送,並在同時不斷地重複發送此消息,直到該消息發送成功爲止(錯誤恢復功能)。

2.8 故障封閉

節點能夠判斷錯誤的類型,判斷是暫時性的數據錯誤(如噪聲干擾)還是持續性的數據錯誤(如節點內部故障),如果判斷是嚴重的持續性錯誤,那麼節點就會切斷自己與總線的聯繫,從而避免影響總線上其他節點的正常工作。

CAN通信的上述特點都是基於CAN協議所定義的多種幀結構來實現的,因此,在下一篇筆記對CAN的幀結構有了瞭解之後,再做進一步的詳細解釋。

3 CAN通信網絡結構

3.1 OSI基本參照模型

實際上,CAN總線網絡底層只採用了OSI基本參照模型中的數據鏈路層、傳輸層。而在CAN網絡高層僅採用了OSI基本參照模型的應用層
CAN網絡層次結構

3.2 CAN協議網絡層次

在CAN協議中,ISO標準只對數據鏈路層和物理層做了規定。對於數據鏈路層和物理層的一部分,ISO11898和ISO11519-2的規定是相同,但是在物理層的PMD子層和MDI子層是不同的。
高速CAN和低速CAN的物理層差異
在CAN總線,每一層網絡中定義的事項如下:
每一層中定義的事項

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章