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