1 簡介
CAN是控制器局域網(wǎng)絡(luò)(Controller Area Network, CAN)的簡稱,是一種能夠?qū)崿F(xiàn)分布式實時控制的串行通信網(wǎng)絡(luò)。
優(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)絡(luò)
CAN總線網(wǎng)絡(luò)主要掛在CAN_H和CAN_L,各個節(jié)點通過這兩條線實現(xiàn)信號的串行差分傳輸,為了避免信號的反射和干擾,還需要在CAN_H和CAN_L之間接上120歐姆的終端電阻。為什么是120Ω,因為電纜的特性阻抗為120Ω,為了模擬無限遠的傳輸線。
3 CAN收發(fā)器
CAN收發(fā)器的作用是負責(zé)邏輯電平和信號電平之間的轉(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)化為相應(yīng)的信號發(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)生錯誤事件。
假設(shè)節(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實時性很高,非常適合汽車和工控應(yīng)用場合如圖27所示。
數(shù)據(jù)量小,發(fā)送和接收時間短,實時性高,被干擾的概率小,抗干擾能力強。
審核編輯 :李倩
-
CAN
+關(guān)注
關(guān)注
57文章
2769瀏覽量
464379 -
通信
+關(guān)注
關(guān)注
18文章
6070瀏覽量
136423 -
總線
+關(guān)注
關(guān)注
10文章
2903瀏覽量
88389
原文標題:CAN總線詳解
文章出處:【微信號:單片機與嵌入式,微信公眾號:單片機與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
CAN總線通信原理介紹 CAN總線模塊選擇指南
CAN總線與LIN總線的區(qū)別
如何使用Arduino實現(xiàn)CAN總線通信
CAN總線通信協(xié)議詳解
![](https://file1.elecfans.com/web2/M00/0B/0D/wKgZomcse3WAMCkFAAHZ5kcfkGo538.jpg)
![](https://file1.elecfans.com/web2/M00/0B/AF/wKgaomcoXPyAd0BeAAHVXcPTtkk237.jpg)
![](https://file1.elecfans.com/web2/M00/0B/56/wKgaomcgYsCAXo3oAAI0Tzg84-Q157.jpg)
【CAN總線知識】全面了解CAN總線協(xié)議
![【<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>知識】全面了解<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>協(xié)議](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
![](https://file1.elecfans.com/web2/M00/09/6E/wKgaomb4rj2AWt3OAAxBUmL4rrw100.jpg)
CAN總線控制器是什么意思
can總線中斷狀態(tài)什么意思呢?
CAN總線的特點、原理及應(yīng)用
什么是CAN總線通信?CAN總線工作原理
![什么是<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>通信?<b class='flag-5'>CAN</b><b class='flag-5'>總線</b>工作原理](https://file1.elecfans.com/web2/M00/C1/15/wKgaomXS_VeAWWGuAAAeFgRhNro567.jpg)
評論