天天看點

CAN總線學習筆記(1)- CAN基礎知識1 CAN的一些基本概念2 CAN通信的特點3 CAN通信網絡結構

依照瑞薩公司的《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總線學習筆記(1)- CAN基礎知識1 CAN的一些基本概念2 CAN通信的特點3 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)- CAN基礎知識1 CAN的一些基本概念2 CAN通信的特點3 CAN通信網絡結構

1.4 CAN信号傳輸

發送過程:

CAN控制器将CPU傳來的信号轉換為邏輯電平(即邏輯0-顯性電平或者邏輯1-隐性電平)。CAN發射器接收邏輯電平之後,再将其轉換為差分電平輸出到CAN總線上。

CAN總線學習筆記(1)- CAN基礎知識1 CAN的一些基本概念2 CAN通信的特點3 CAN通信網絡結構

接收過程:

CAN接收器将CAN_H 和 CAN_L 線上傳來的差分電平轉換為邏輯電平輸出到CAN控制器,CAN控制器再把該邏輯電平轉化為相應的信号發送到CPU上。

CAN總線學習筆記(1)- CAN基礎知識1 CAN的一些基本概念2 CAN通信的特點3 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總線學習筆記(1)- CAN基礎知識1 CAN的一些基本概念2 CAN通信的特點3 CAN通信網絡結構

3.2 CAN協定網絡層次

在CAN協定中,ISO标準隻對資料鍊路層和實體層做了規定。對于資料鍊路層和實體層的一部分,ISO11898和ISO11519-2的規定是相同,但是在實體層的PMD子層和MDI子層是不同的。

CAN總線學習筆記(1)- CAN基礎知識1 CAN的一些基本概念2 CAN通信的特點3 CAN通信網絡結構

在CAN總線,每一層網絡中定義的事項如下:

CAN總線學習筆記(1)- CAN基礎知識1 CAN的一些基本概念2 CAN通信的特點3 CAN通信網絡結構

原文位址:https://blog.csdn.net/weixin_40528417/article/details/79476186

繼續閱讀