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