01
CAN總線由來
CAN總線最早是由Bosch和Intel在80年代末開發(fā)的,雖然最早是用在汽車級(jí)的通信系統(tǒng)中的,但是隨著技術(shù)的發(fā)展,CAN總線應(yīng)用范圍已經(jīng)不在局限于汽車中,像機(jī)器人、工業(yè)、自動(dòng)控制系統(tǒng)中,都有廣泛的應(yīng)用。
02
CAN總線為什么這么好用
以CAN總線應(yīng)用最廣的汽車給大家舉例,汽車電子控制系統(tǒng)之間的數(shù)據(jù)通信基本上都是通過CAN總線實(shí)現(xiàn)。
在下圖中,Motronic控制單元和變速箱控制單元之間的數(shù)據(jù)通信包含5根數(shù)據(jù)線。這還僅僅是兩個(gè)控制器之間的傳輸線。如果我們再加上轉(zhuǎn)向控制、雨刷控制、車窗控制等等,就需要大量的信號(hào)數(shù)據(jù)線,這個(gè)時(shí)候會(huì)導(dǎo)致整車的電子控制系統(tǒng)線路復(fù)雜,維修起來也非常困難。
而如果使用CAN總線,各個(gè)控制單元之間的信息通過兩根數(shù)據(jù)線就可以進(jìn)行交換了:
使用CAN總線之后的通信網(wǎng)絡(luò)對比:
03
CAN總線技術(shù)原理
CAN總線使用串行數(shù)據(jù)傳輸方式,可以1Mb/s的速率在40m的雙絞線上運(yùn)行,也可以使用光纜連接,而且支持多主控制器。
當(dāng)CAN總線上的一個(gè)節(jié)點(diǎn)(站)發(fā)送數(shù)據(jù)時(shí),它以報(bào)文形式廣播給網(wǎng)絡(luò)中所有節(jié)點(diǎn)。對每個(gè)節(jié)點(diǎn)來說,無論數(shù)據(jù)是否是發(fā)給自己的,都對其進(jìn)行接收。
CAN總線的軟件報(bào)文
在上面這組報(bào)文中:
仲裁域, 每組報(bào)文開頭內(nèi)容,前11位字符為標(biāo)識(shí)符,定義了報(bào)文的優(yōu)先級(jí),這種報(bào)文格式稱為面向內(nèi)容的編址方案。在同一系統(tǒng)中 標(biāo)識(shí)符是唯一的 ,不可能有兩個(gè)站發(fā)送具有相同標(biāo)識(shí)符的報(bào)文。當(dāng)幾個(gè)站同時(shí)競爭總線讀取時(shí),這種配置十分重要。
在仲裁域的最后一位是遠(yuǎn)程傳輸請求位(RTR),代表信息幀是數(shù)據(jù)幀還是不包含任何數(shù)據(jù)的遠(yuǎn)地請求幀
控制域, 前兩位是保留位,作為擴(kuò)展位,DLC表示一幀中數(shù)據(jù)字節(jié)的數(shù)目。
數(shù)據(jù)域, 包含0~8字節(jié)的數(shù)據(jù)。
校驗(yàn)域, 檢驗(yàn)位錯(cuò)用的循環(huán)冗余校驗(yàn)域,共15位。
結(jié)束域, 由七位隱性電平組成。
CAN總線是可靠性很高的總線,共有五種錯(cuò)誤:
CRC錯(cuò)誤: 發(fā)送與接收的CRC值不同發(fā)生該錯(cuò)誤;
格式錯(cuò)誤: 幀格式不合法發(fā)生該錯(cuò)誤;
應(yīng)答錯(cuò)誤: 發(fā)送節(jié)點(diǎn)在ACK階段沒有收到應(yīng)答信息發(fā)生該錯(cuò)誤;
位發(fā)送錯(cuò)誤: 發(fā)送節(jié)點(diǎn)在發(fā)送信息時(shí)發(fā)現(xiàn)總線電平與發(fā)送電平不符發(fā)生該錯(cuò)誤;
位填充錯(cuò)誤: 通信線纜上違反通信規(guī)則時(shí)發(fā)生該錯(cuò)誤。
當(dāng)發(fā)生這五種錯(cuò)誤之一時(shí),發(fā)送節(jié)點(diǎn)或接受節(jié)點(diǎn)將發(fā)送錯(cuò)誤幀。
04
CAN總線物理層
在節(jié)點(diǎn)終端的接口器件有三種形式,如下圖:
CAN總線的終端電阻的接法如下:
增加終端電阻的目的是為了增強(qiáng)CAN通訊的可靠性,消除CAN總線終端信號(hào)反射干擾。CAN總線網(wǎng)絡(luò)最遠(yuǎn)的兩個(gè)端點(diǎn)通常要加入終端匹配電阻,如上圖。一般如果CAN總線使用的是在雙絞線上運(yùn)行,這時(shí)我們會(huì)增加120Ω的電阻,這是因?yàn)槠ヅ潆娮枋怯蓚鬏旊娎|的特性阻抗決定的。
05
常用CAN控制器與收發(fā)器
在開發(fā)板上CAN總線需要控制器和收發(fā)器,下圖是常用的CAN總線接口電路:
SJA1000是用的較多的獨(dú)立CAN控制器,價(jià)格又很便宜,幾十塊錢。SJA1000可以和51單片機(jī)、STM32等組合快速搭建CAN總線網(wǎng)絡(luò)。SJA1000通過并行總線與MCU連接,需要通過地址、數(shù)據(jù)、讀寫控制等多個(gè)線進(jìn)行連接。
PCA82C250收發(fā)器是CAN控制器的物理接口,可以給總線提供差動(dòng)發(fā)送和接受信號(hào)。和SJA1000一樣,都是采用5V供電。
沒玩過CAN總線的小伙伴,可以自制或者淘寶購買2個(gè)帶有單片機(jī)+控制器和收發(fā)器的開發(fā)板,兩者之間一對一點(diǎn)對點(diǎn)通信,一塊作為主控發(fā)送控制數(shù)據(jù),另一塊接受數(shù)據(jù)并執(zhí)行操作,比如點(diǎn)個(gè)燈。如此簡單,就試試吧!
-
機(jī)器人
+關(guān)注
關(guān)注
213文章
29518瀏覽量
211672 -
CAN總線
+關(guān)注
關(guān)注
145文章
1975瀏覽量
132300 -
通信系統(tǒng)
+關(guān)注
關(guān)注
6文章
1224瀏覽量
53962
發(fā)布評論請先 登錄
高速CAN總線和低速CAN總線的特性

什么是CAN總線通信?CAN總線工作原理







CAN總線簡述
基于CAN 總線的分布式潛水電機(jī)監(jiān)控系統(tǒng)
CAN總線概述及應(yīng)用_CAN總線的應(yīng)用案例(汽車CAN總線應(yīng)用)

CAN總線協(xié)議是什么?CAN總線協(xié)議有哪些?CAN總線協(xié)議知識(shí)分析

評論