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