1. 簡介
- 兩根信號線,差分信號
- 最高速率可達到1Mbps
- CAN控制器內建了強大的檢錯和處理機制,容錯能力強
- 一幀CAN消息最多傳輸8字節用戶數據
- 具有總線仲裁機制,可以組建多主系統
2 CAN標準
- ISO-11898:2003
3. CAN通信協議
特征
- 載波偵聽(CSMA):總線上的每一個節點在企圖發送報文前,必須要監聽總線,當總線處于空閑時,才可發送
- 仲裁(CD+AMP):通過預定編程好的報文優先級逐位仲裁來解決碰撞,報文優先級位于每個報文的標識域。更高級別優先級標識的報文總是能獲得總線訪問權,即:標識符中最后保持邏輯高電平的會繼續傳輸,因為它具有更高優先級。
標準CAN
只有11位標識符,每幀的數據長度為51+(064)=(51117)位。注:不計位填充
Paste_Image.png
- 標識符:標準CAN具有11位標識符,用來確定報文的優先級。此域的數值越小,優先級越高
擴展CAN
具有29位標識符,每幀數據長度為71+(064)=(71135)位。注:不計位填充
Paste_Image.png
4. 網絡拓撲
- 使用差分信號
- 推薦使用雙絞線
Paste_Image.png
5. 報文尋址和標識
- CAN報文中沒有任何顯式的地址
- CAN報文被稱為“內容尋址”的報文
- 每個CAN控制器都會檢查總線上的所有通信,并使用硬件過濾器和軟件的組合來確定是否對該報文感興趣
需要注意的:
- 常規的報文地址類似于“這是發給節點X的報文”
- 內容尋址的報文類似于“這是包含標簽為X的數據的報文”
6. CAN總線與485總線比較
- 總線利用率:RS485是單主從結構,就是一個總線上只能有一臺主機,通訊都由它發起的,它沒有下命令,下面的節點不能發送,而且要發完即答, 受到答復后,主機才向下一個節點詢問,這樣是為了防止多個節點向總線發送數據,而造成數據錯亂。而CAN-bus是多主從結構,每個節點都有CAN控制 器,多個節點發送時,以發送的ID號自動進行仲裁,這樣就可以實現總線數據不錯亂,而且一個節點發完,另一個節點可以探測到總線空閑,而馬上發送,這樣省 去了主機的詢問,提高了總線利用率,增強了快速性。所以在汽車等實性要求高的系統,都是用CAN總線,或者其他類似的總線。
- 錯誤檢測機制,RS485只規定了物理層,而沒有數據鏈路層,所以它對錯誤是無法識別的,除非一些短路等物理錯誤。這樣容易造成一個節點破壞 了,拼命向總線發數據(一直發1),這樣造成整個總線癱瘓。所以RS485一旦壞一個節點,這個總線網絡都掛。而CAN總線有CAN控制器,可以對總線任 何錯誤進行檢測,如果自身錯誤超過128個,就自動閉鎖。保護總線。如果檢測到其他節點錯誤或者自身錯誤,都會向總線發送錯誤幀,來提示其他節點,這個數 據是錯誤的。大家小心。這樣CAN總線一旦有一個節點CPU程序跑飛了,它的控制器自動閉鎖。保護總線。所以在安全性要求高的網路,CAN是很強的。
- 價格與培訓成本:CAN器件的價格大約是485的2倍這樣,485的通訊從軟件上是很方便的,只要懂串行通訊,就可以編程,而CAN需要底層工程師了解CAN復雜的層,編寫上位機軟件也要了解CAN的協議。可謂培訓成本較高。
- CAN總線通過CAN控制器接口芯片82C250的兩個輸出端CANH和CANL與物理總線相連,而CANH端的狀態只能是高電平或懸浮狀態,CANL端只能是低電平或懸浮狀態。這就保證不會出現象在RS-485網絡中,當系統有錯誤,出現多節點同時向總線發送數據時,導致總線呈現短路,從而損壞某些節點的現象。而且CAN節點在錯誤嚴重的情況下具有自動關閉輸出功能,以使總線上其他節點的操作不受影響,從而保證不會出現象在網絡中,因個別節點出現問題,使得總線處于“死鎖”狀態。
- CAN具有完善的通信協議,可由CAN控制器芯片及其接口芯片來實現,從而大大降低了系統的開發難度,縮短了開發周期,這些是只僅僅有電氣協議的RS-485所無法比擬的。