從零讀懂CAN匯流排(上)

2021-10-09 11:41:37 字數 1938 閱讀 2634

上世紀八十年代以來,汽車ecu越來越多,如abs,電控門窗,電子燃油噴射裝置。如果仍然採用常規的點對點佈線方式,即電線一段與開關相接,另一端與用電裝置相通,將會導致車上電線數目的急劇增加,從而帶來線束的冗餘及維修成本的提高。這就對汽車的線束分布及資訊通訊提出了更高的要求。匯流排技術可以實現資訊的實時共享,解決了傳統佈線方式中線束多,佈線難,成本高等問題,can(controller area network)匯流排技術應運而生。

點對點通訊

匯流排通訊

can匯流排是由德國研發和生產汽車電子產品著稱的bosch公司開發的,並最終成為國際標準(iso11519),是國際上應用最廣泛的現場匯流排之一。can匯流排是一種多主控(multi-master)的匯流排系統。傳統匯流排系統如usb或乙太網等是在匯流排控制器的協調下,實現從a節點到b節點大量資料的傳輸。can網路的訊息是廣播式的,即在同一時刻網路上所有節點偵測的資料是一致的,它是一種基於訊息廣播模式的序列通訊匯流排。

can匯流排的很多優點,使得它得到了廣泛的應用,如傳輸速度最高到1mbps, 通訊距離最遠到10km,無損位仲裁機制,多主結構。

can匯流排標準

can匯流排標準之規定了物理層和資料鏈路層,至於應用層需要使用者自定義。不同的can標準僅物理層不同。物理層和資料鏈路層:iso11898;應用層:不同的應用領域使用不同的應用層標準。

can拓撲網路

連線在can匯流排上的裝置叫做節點裝置(can node),can網路的拓撲一般為線型。線束最常用的是雙絞線,線上傳輸為對稱的差分電平訊號。下圖為can匯流排網路示意圖,節點主要包括host、控制器和收發器。host常整合有can控制器,can控制器負責處理協議相關功能,以減輕host的負擔。can收發器將控制器連線到傳輸媒介。通常控制器和匯流排收發器通過光耦或磁耦隔離,這樣即使匯流排上過壓損壞收發器,控制器和host裝置也可以得到保護。

在傳送資料時,can控制器把要傳送的二進位制編碼通過can_tx線傳送到can收發器,然後由收發器把這個普通的邏輯電平訊號轉化成差分訊號,通過差分線can_high和can_low輸出到can匯流排網路。接收資料過程,相反。採用差分訊號,可以取得更好的電磁相容效果。因此,can匯流排物理傳輸媒介只需要兩根線。

高速can匯流排最高訊號傳輸速率為1mbps,支援最長距離40m。iso11898-2要求在高速can匯流排兩段安裝端接電阻rl(端接電阻一般為120ω,因為電纜的特性阻抗為120 ω,為了模擬無限遠的傳輸線。)以消除反射。低速can最高速度只有125kbps,所以iso11898-3沒有端接要求。

因為傳輸距離越大,訊號時延也越大,為了保證訊息的正確取樣,匯流排上的訊號速率相應也要下降。下圖是推薦的訊號速率與距離的關係。

can收發器

can匯流排分高速can和低速can,收發器也分為高速can收發器(1mbps)和低速can收發器(125kbps)。低速can也叫fault

tolerance can,指的是即使匯流排上一根線失效,匯流排依然可以通訊。如同串列埠中的max3232用作電平轉換,can收發器的作用則是把邏輯訊號轉換為差分訊號。

差分訊號

can匯流排採用差分訊號傳輸,通常情況下只需要兩根訊號線就可以進行正常的通訊。在差分訊號中,邏輯0和邏輯1是用兩根差分訊號線的電壓差來表示。當處於邏輯1,can_high和can_low的電壓差小於0.5v時,稱為隱性電平(recessive);當處於邏輯0,can_high和can_low的電壓差大於0.9v,稱為顯性電平(dominant)。

高速can

低速容錯can (fault tolerance can)

can匯流排遵從「線與」機制:「顯性」位可以覆 蓋「隱性」位;只有所有節點都發 送「隱性」位, 匯流排才處於「隱性」 狀態。這種「線與」機制使can匯流排呈現顯性優先的特性。

can匯流排聯結器

下一部分將介紹can匯流排資料鏈路層,和can匯流排同步機制。

can匯流排學習(一) 初識can匯流排

can匯流排最初由德國bosch公司為汽車檢測 控制系統而設計的。1993年can成為國際標準iso11898 高速應用 和iso1119 低速應用 can的規範從can1.2規範 標準格式 發展為相容can1.2規範的can2.0規範 can2.0a為標準格式,can2.0b為擴充套件格式 目前應...

初學CAN匯流排

初學can 匯流排,之前用的是 rs485 485 中沒有匯流排仲裁的概念,如果匯流排上有十個節點,要事先算好每組資料的傳送用時,調好時間延遲,逐個排隊傳送。而 can匯流排可以把多個節點的資料都送到本站的 can晶元,並處於準備狀態,等待匯流排空閒時,向匯流排傳送資料,由匯流排仲裁哪乙個節點優先傳...

can匯流排配置

can 匯流排配置 在linux 系統中,can匯流排介面 裝置作為網路裝置 被系統進行統一 管理。在控制 台下,can匯流排 的配置和以 太網的配置使用相同的 命令。在控制台 上輸入命令 ifconfig a 可以得到以下結果 can0 link encap unspec hwaddr 00 00...