1 簡介
CAN是控制器局域網絡(Controller Area Network, CAN)的簡稱,是一種能夠實現分布式實時控制的串行通信網絡。
優點:
傳輸速度最高到1Mbps,通信距離最遠到10km,無損位仲裁機制,多主結構。近些年來,CAN控制器價格越來越低。
低成本:ECUs通過單個CAN接口進行通信,布線成本低。
高集成:CAN總線系統允許在所有ECUs上進行集中錯誤診斷和配置。
可靠性:該系統對子系統的故障和電磁干擾具有很強的魯棒性,是汽車控制系統的理想選擇。
高效率:可以通過id對消息進行優先級排序,以便最高優先級的id不被中斷。
靈活性:每個ECU包含一個用于CAN總線收發芯片,隨意添加CAN總線節點。
2 CAN總線網絡
CAN總線網絡主要掛在CAN_H和CAN_L,各個節點通過這兩條線實現信號的串行差分傳輸,為了避免信號的反射和干擾,還需要在CAN_H和CAN_L之間接上120歐姆的終端電阻。為什么是120Ω,因為電纜的特性阻抗為120Ω,為了模擬無限遠的傳輸線。
3 CAN收發器
CAN收發器的作用是負責邏輯電平和信號電平之間的轉換。
即從CAN控制芯片輸出邏輯電平到CAN收發器,然后經過CAN收發器內部轉換將邏輯電平轉換為差分信號輸出到CAN總線上,CAN總線上的節點都可以決定自己是否需要總線上的數據。具體的引腳定義如下:
4 CAN信號表示
CAN總線采用不歸零碼位填充技術,也就是說CAN總線上的信號有兩種不同的信號狀態,分別是顯性的(Dominant)邏輯0和隱形的(recessive)邏輯1,信號每一次傳輸完后不需要返回到邏輯0(顯性)的電平。
顯性與隱性電平的解釋:
CAN的數據總線有兩條,一條是黃色的CAN_High,一條是綠色的CAN_Low。當沒有數據發送時,兩條線的電平一樣都為2.5V,稱為靜電平,也就是隱性電平。當有信號發送時,CAN_High的電平升高1V,即3.5V,CAN_Low的電平降低1V,即1.5V。
按照定義的:
CAN_H-CAN_L < 0.5V 時候為隱性的,邏輯信號表現為"邏輯1"- 高電平。
CAN_H-CAN_L > 0.9V 時候為顯性的,邏輯信號表現為"邏輯0"- 低電平。
5 CAN信號傳輸
發送過程:CAN控制器將CPU傳來的信號轉換為邏輯電平(即邏輯0-顯性電平或者邏輯1-隱性電平)。CAN發射器接收邏輯電平之后,再將其轉換為差分電平輸出到CAN總線上。
接收過程:CAN接收器將CAN_H 和 CAN_L 線上傳來的差分電平轉換為邏輯電平輸出到CAN控制器,CAN控制器再把該邏輯電平轉化為相應的信號發送到CPU上。
6 CAN數據傳輸
CAN總線傳輸的是CAN幀,CAN的通信幀分成五種,分別為數據幀、遠程幀、錯誤幀、過載幀和幀間隔。
數據幀根據仲裁段長度不同分為標準幀(2.0A)和擴展幀(2.0B)。
幀起始
由一個顯性位(低電平)組成,發送節點發送幀起始,其他節點同步于幀起始;
幀結束
由7個隱形位(高電平)組成。
仲裁段
只要總線空閑,總線上任何節點都可以發送報文,如果有兩個或兩個以上的節點開始傳送報文,那么就會存在總線訪問沖突的可能。但是CAN使用了標識符的逐位仲裁方法可以解決這個問題。
CAN總線控制器在發送數據的同時監控總線電平,如果電平不同,則停止發送并做其他處理。如果該位位于仲裁段,則退出總線競爭;如果位于其他段,則產生錯誤事件。
假設節點A、B和C都發送相同格式相同類型的幀,如標準格式數據幀,它們競爭總線的過程是:
幀ID越小,優先級越高。由于數據幀的RTR位為顯性電平,遠程幀為隱性電平,所以幀格式和幀ID相同的情況下,數據幀優先于遠程幀;由于標準幀的IDE位為顯性電平,擴展幀的IDE位為隱形電平,對于前11位ID相同的標準幀和擴展幀,標準幀優先級比擴展幀高。
數據段
一個數據幀傳輸的數據量為0~8個字節,這種短幀結構使得CAN-bus實時性很高,非常適合汽車和工控應用場合如圖27所示。
數據量小,發送和接收時間短,實時性高,被干擾的概率小,抗干擾能力強。
原文標題:CAN總線詳解
文章出處:【微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
控制器
+關注
關注
112文章
16198瀏覽量
177399 -
CAN
+關注
關注
57文章
2715瀏覽量
463374 -
總線
+關注
關注
10文章
2866瀏覽量
87985
原文標題:CAN總線詳解
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論