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