在前2天的推送中我們介紹了I2C、SPI 總線,但它們多用于傳輸距離短、協議簡單、數據量小、主要面向 IC(集成電路)間通信的“輕量級”場合。而 CAN 總線則不同,CAN 總線定義了更為優秀的物理層、數據鏈路層,并且擁有種類豐富、簡繁不一的上層協議。
什么是CAN 總線
CAN 是“Controller Area Network”的縮寫,即“控制器局域網”,是一個 ISO 標準的串行通信協議。CAN 總線由德國 BOSCH 公司研發設計,用于應對汽車上日益龐大的電子控制系統的需求,其最大的特點是可拓展性好,可承受大量數據的高速通信,并且高度穩定可到。ISO 組織通過 ISO11898 和 ISO11519 對 CAN 總線進行了標準化,使其早早確立了歐洲汽車總線標準的地位。時至今日,CAN 總線已經獲得業界的高度認可,其應用也從汽車電子領域延伸至工業自動化、船舶、醫療設備、工業設備等領域。
CAN 總線網絡拓撲結構
CAN 總線的物理連接只需要兩根線,常稱為CAN_H和CAN_L,通過差分信號進行數據的傳輸。CAN 總線有兩種電平,分別為隱性電平和顯性電平,這兩種電平有著類似漏極 I/O 電平信號之間“與”的關系:
·若隱性電平相遇,則總線表現為隱性電平;
·若顯性電平相遇,則總線表現為顯性電平;
·若隱性電平和顯性電平相遇,則總線表現為顯性電平。
一個典型的 CAN 總線網絡拓撲結構如圖1所示,注意兩端的終端電阻是必需的。
圖1. CAN 總線網絡拓撲
CAN 總線的幾種數據幀
CAN 總線協議規定了5種幀,分別是數據幀、遙控幀、錯誤幀、過載幀以及幀間隔,實踐中數據幀的應用最為頻繁。各種幀的用途如表1所示。
表1. CAN 總線數據幀的種類及用途
CAN 總線的特點
CAN 總線網絡是一種真正的多主機網絡,在總線處于空閑狀態時,任何一個節點單元都可以申請成為主機,向總線發送消息。其原則是:最先訪問總線的節點單元可以獲得總線的控制權;多個節點單元同時嘗試獲取總線的控制權時,將發生仲裁事件,具有高優先級的節點單元將獲得總線控制權。
CAN 協議中,所有的消息都以固定的數據格式打包發送。兩個以上的節點單元同時發送信息時,根據節點標識符(常稱為 ID,亦打包在固定的數據格式中)決定各自優先級關系,所以 ID 并非表示數據發送的目的地址,而是代表著各個節點訪問總線的優先級。如此看來,CAN 總線并無類似其他總線“地址”的概念,在總線上增加節點單元時,連接在總線的其他節點單元的軟硬件都不需要改變。
CAN 總線的通信速率和總線長度有關,在總線長度小于 40m 的場合中,數據傳輸速率可以達到 1Mbps,而即便總線長度上升至 1000m,數據的傳輸速率仍可達到 50Kbps,無論在速率還是傳輸距離都明顯優于常見的 RS232、RS485 和 I2C 總線。
對于總線錯誤,CAN 總線有錯誤檢測功能、錯誤通知功能、錯誤恢復功能三種應對措施,分別應對于下面三點表述:所有的單元節點都可以自動檢測總線上的錯誤;檢測出錯誤的節點單元會立刻將錯誤通知給其他節點單元;若正在發送消息的單元檢測到當前總線發生錯誤,則立刻強制取消當前發送,并不斷反復發送此消息至成功為止。
CAN 總線上的每個節點都可以通過判斷得出,當前總線上的錯誤時暫時的錯誤(如瞬間的強干擾)還是持續的錯誤(如總線斷裂)。當總線上發生持續錯誤時,引起故障的節點單元會自動脫離總線。
CAN 總線上的節點數量在理論上沒有上限,但在實際上收到總線上的時間延時及電氣負載的限制。降低最大通信速率,可以增加節點單元的連接數;反之,減少節點單元的連接數,則最大通信速率可以提高。
-
CAN
+關注
關注
57文章
2715瀏覽量
463365 -
總線
+關注
關注
10文章
2866瀏覽量
87981 -
I2C
+關注
關注
28文章
1481瀏覽量
123279
原文標題:淺淡CAN總線,相比I2C、SPI?,它有更為擁有種類豐富、簡繁不一的上層協議
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論