CAN總線定義:
CAN(Control Area Network)屬于現場總線的范疇,是一種高性能、高可靠性、易于開發和低成本的串行總線。
CAN是由德國Bosch公司在1986年為汽車監測和控制而設計的。由于其高性能、高可靠性、實時性等優點,隨后也廣泛用于工業自動化、多種控制設備、交通工具、醫療儀器以及建筑、環境控制等多種領域,其在每個領域的廣泛使用促進了標準化的進程。
1991年9月PHILIPS SEMICONDUCTORS制訂并發布了CAN技術規范V2.0,該技術規范包括A和B兩部分。2.0A曾在CAN技術規范1.2中定義的CAN報文格式,提供11位地址;而2.0B給出了標準和擴展的兩種報文格式,提供29位地址。此后ISO在1993年11月也正式發布了CAN的國際標準ISO11898。其中ISO11898-1定義了CAN數據鏈路層;ISO11898-2定義了非容錯CAN物理層;ISO11898-3定義了11898-3的容錯物理層。CAN總線協議只定義了物理層和數據鏈路層,要將CAN總線應用于實際的工程項目和產品開發中必須制定上層應用協議。目前汽車上應用的協議有:ISO15675(傳輸層協議)、ISO14229(應用層協議)等。
CAN總線的特點
1、 多主控制方式。在總線空閑時,所有單元都可往總線上發送消息(多主控制)。最先訪問總線的單元可獲得發送權(采用CSMA/CA方式)。當多個單元同時發送時,CANID小的節點獲得發送權。
2、 非破壞性總線仲裁技術。當總線發生沖突時,高優先級報文可以不受影響的進行傳輸,保證高優先級的實時性要求;而低優先級的報文退出傳輸。
3、 高可靠性。每幀都有位填充,CRC校驗等多種錯誤檢測,保證了極低的錯誤率;發送期間丟失仲裁或者由于錯誤而破壞了的數據幀可自動重發(這一點由CAN控制器自己重發,無需人為重新裝載發送數據)。
4、 自動關閉總線。CAN控制器可以檢測和判斷總線上的錯誤類型,是短暫的數據錯誤(如外部噪聲),還是持續數據錯誤(如單元內部故障、驅動器故障、短路故障等)。當錯誤為持續性故障時,CAN控制器可自動關閉,脫離總線,以免影響總線上的其他節點正常通信。
CAN總線拓撲圖
CAN控制器根據兩根線上的電位差來判斷總線電平。總線電平分為顯性和隱性電平,二者必居其一。發送方通過使總線電平變化,將消息發送給接收方。下圖1是一個CAN總線連接示意圖。
下圖1由兩個CAN網絡組成,其中一個網絡通信速率為500K,另外一個為125K。每個CAN網絡由CANH和CANL兩根線組成,各個節點(ABS、SAS、ETM、ECM)分別連接在CANH和CAHL上。在每個CAN網絡的頭尾分別連接了兩個終端電阻,終端電阻的大小為120歐姆。
下圖1左邊陰影部分是某個節點的內部電路模塊,包含CPU、CAN控制器(CAN Controller,一般單片機都集成了CAN控制器模塊)以及CAN收發器(CAN transceiver)。其中CPU負責將需要發送的數據傳遞給CAN控制器,以及接收從CAN控制器中解析的數據;CAN控制器將Rx腳的二進制的0/1轉換為具體的報文,然后將報文傳遞給CPU,以及將CPU需要發送的報文轉換為二進制0/1,然后通過Tx腳傳遞給CAN收發器。CAN控制器的主要功能是電平轉換,將CANH和CANL上的電平轉換為Rx腳上的0/1,將Tx腳上的0/1在CANH和CANL進行轉換。
圖1
信號電平
高速CAN,定義 當CANH 和 CANL 電壓相同(CANH = CANL = 2.5V)時為邏輯“1”,CANH和CANL 電壓相差 2V(CANH = 3.5V, CANL = 1.5V) 時為邏輯“0”。高速CAN收發器在共模電壓范圍內(-12V ~ 12V),將CANH和CANL電壓相差大于 0.9V 解釋為顯性狀態(Dominant),而將CANH和CANL電壓相差小于 0.5V 解釋為為隱性狀態(Recessive)。
CAN總線采用不歸零碼位填充技術,也就是說CAN總線上的信號有兩種不同的信號狀態,分別是顯性的(Dominant)邏輯0和隱形的(recessive)邏輯1,信號每一次傳輸完后不需要返回到邏輯0(顯性)的電平。
CAN信號傳輸
圖2 a
發送過程: CAN控制器將CPU傳來的報文轉換為邏輯電平(即邏輯0-顯性電平或者邏輯1-隱性電平)通過Tx腳傳遞給CAN收發器。CAN收發器接收邏輯電平之后,再將其轉換為差分電平輸出到CAN總線上。
圖2 b
接收過程: CAN收發器將CAN_H 和 CAN_L 線上傳來的差分電平轉換為邏輯電平輸出到CAN控制器的Rx腳,CAN控制器再把該邏輯電平轉化為相應報文發送到CPU上。
圖2 c
責任編輯人:CC
評論