CAN總線基本知識
基本概念
CAN 是Contoller Area Network 縮寫,即控制域網絡,簡單來說就是用於汽車不同電子器件之間傳輸網絡。
CAN 總線兩個主要ISO國際標准是:ISO11898和ISO11519
ISO11898 定義了通信速率為 125 kbps~1 Mbps 的高速 CAN 通信標准,屬於閉環總線,傳輸速率可達1Mbps,總線長度 ≤ 40米。
ISO11519 定義了通信速率為 10~125 kbps 的**低速 CAN **通信標准,屬於開環總線,傳輸速率為40kbps時,總線長度可達1000米。
CAN為了減少外部電磁場對內部點評的干擾,通常采用雙絞線
CAN的拓撲結構
下圖中,左邊是高速CAN總線的拓撲結構,右邊是低速CAN總線的拓撲結構。
CAN信號表示
在CAN總線上,利用CAN_H和CAN_L兩根線上的電位差來表示CAN信號。CAN總線上的電位差分為顯性電平和隱性電平。其中顯性電平為邏輯0,隱性電平為邏輯1。
ISO11898標准(125kbps ~ 1Mbps)和ISO11519標准(10kbps ~ 125kbps)中CAN信號的表示分別如下所示:
CAN信號傳輸
發送過程:CAN控制器將CPU傳來的信號轉為邏輯電平(即邏輯0-顯性電平或者邏輯1-隱性電平)。CAN發射器接收邏輯電平之后,再將其轉換為差分電平輸出到CAN總線上。
接受過程則剛好相反。
CAN通信網絡結構
OSI基本參照模型
OSI參考模型為7層,物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層,而CAN通信底層僅使用了物理層和數據鏈路層
CAN總線報文類型
CAN總線的報文類型主要有五種,數據幀、遠程幀、錯誤幀、過載幀、幀間隔
下面以數據幀為例進行簡單介紹,其幀結構如下圖所示,包含七個段:幀起始、仲裁段、控制段、數據段、CRC段、ACK段、幀結束
幀起始
仲裁域:通過11位標識符對報文優先級進行判斷,RTR位判斷為數據幀還是遠程幀
控制域:描述數據域中的字節數
數據域:8個字節傳遞信息,如轉速等
CRC域:循環冗余校驗,避免因物理層傳遞出現丟失的情況
ACK域:表明總線中至少有一個節點正確接收到發送的報文,沒有發生干擾
幀結束