隨著汽車工業的不斷發展,汽車電子控制單元逐漸增多,各電控單元之間的信號交換更為復雜。而CAN總線可將汽車內部各電控單元之間連接成一個局域網絡,實現了信息的共享,大大優化了整車的布線。
接下來,我們將繼續為大家分享CAN相關技術知識。
CAN的分層架構
它由三層組成,即應用層、數據鏈路層和物理層。
? 應用層:該層與操作系統或CAN設備的應用程序交互。
? 數據鏈路層:它在發送、接收和驗證數據方面將實際數據連接到協議。
CAN物理層特性
CAN物理層被分為三個部分:在CAN控制器芯片中實現的物理編碼,指定收發器特性的物理介質附件,物理介質依賴子層,這是特定的應用,沒有標準化。
圖1. CAN總線接線圖
物理編碼子層
PCS包括比特編碼和解碼、比特定時。它為收發器芯片提供連接單元接口,并包含Tx和Rx引腳,位級錯誤也通過位填充來處理。
位時序
出于時序目的,CAN總線上的每個位都劃分成至少4個時間份額,時間份額邏輯上劃分成4段:
同步段
傳播段
相位緩沖段1
相位緩沖段2
圖2. CAN位時序
同步段
1個時間量子長度,用于多個連接在總線上的單元,通過此段實現時序調整,當總線電壓電平發生變化(顯性到隱性或隱性到顯性)時,預計該段會出現位沿。
傳播段
用于補償網絡上節點之間的物理延遲,包括發送單元的輸出延遲、總線上信號的傳播延遲、接收單元的輸入延遲。
相位緩沖段
相位緩沖段用于補償節點間的晶振誤差,又分為相位緩沖段1(PS1)和相位緩沖段2(PS2),在這個時間段的末端進行總線狀態的采樣。兩個相位緩沖段PS1和PS2用于補償總線上的邊沿相位誤差。
采樣點
采樣點是位時間內的一個時間點,在該時間點,讀取總線電平并進行分析。位時間內的采樣點決定CAN總線電壓是隱性還是顯性。以位時間的百分比表示,位置從位時間的起點開始計算,位于階段1和階段2之間。
處理位級錯誤
位數填充
CAN協議遵循NRZ編碼進行傳輸。邏輯電平在位間隔之間不發生變化。CAN需要一個邏輯電平的轉換來進行再同步。因此,在5個相同的連續比特之后,將發送1個相反邏輯電平的比特。這就是所謂的東西位,接收器可以識別它。
位錯誤
一個正在發送比特的節點總是監控總線,如果發射器發送的比特與總線上的比特值不同,則會產生一個錯誤幀。
物理介質依賴子層
該層在CAN收發器芯片中實現,通過Tx和Rx引腳從CAN控制器獲得輸入,輸出驅動CANH和CANL線。收發器負責不同的比特率,CAN總線速度指的是CAN總線通信速率。最大的CAN總線通信速率是1Mbit/sec。對于特殊的應用,一些CAN控制器將處理更高的速度,超過1Mbit/sec。低速的CAN通信速率是125kbits/sec。
與介質有關的子層
依賴介質的子層是高度特定的應用,不同連接器的引腳分配標準化屬于這一層,各種連接器為DB9、OBD II。
CAN總線DB9引腳布局
CAN總線通常通過連接器訪問。
圖3. CAN總線DB9引腳分配
引腳1:無定義
引腳2:CAN_L
引腳3:CAN GND
引腳4:無定義
引腳5:CAN_SHLD
引腳6:GND
引腳7:CAN_H
引腳8:無定義
引腳9:CAN_V+
各種微控制器中的CAN總線支持
微控制器應具有CAN硬件和軟件,提供CAN驅動程序以實現通信。Python-CAN庫也可用于為微控制器的硬件組件提供抽象的驅動程序,并用于通過CAN網絡發送和接收消息。Python CAN總線也用于測試硬件和 CAN 總線數據記錄。
用于Arduino的CAN總線屏蔽
? CANbus Shield采用帶有SPI接口和CAN收發器的CAN總線控制器,為Arduino提供CAN總線能力。
? 帶有CAN總線的Arduino有助于從ECU獲取車速、油耗、溫度等信息。
? Arduino CAN庫用于通過CAN總線發送和接收CAN消息。
樹莓派CAN總線:
樹莓派沒有特定的硬件,即CAN控制器和CAN收發器來支持CAN協議。樹莓派軟件不支持CAN總線,樹莓派支持通過 SPI 接口進行 CAN 通信。
樹莓派通過SPI接口連接到板子支持的外部CAN控制器,CAN控制器通過Rx和Tx線連接到CAN收發器。
CAN控制器示例:SJA100、MCP2515
CAN收發器示例:TJA1040、MCP2551
ACM32 CAN總線:
ACM32-F0/F4芯片內置1路~2路CAN控制器,并提供對應的CAN總線接口驅動庫,搭配外部的CAN收發器,保證CAN總線數據通訊的安全可靠。
如何讀取CAN總線數據?
當CAN總線與Microchip CAN總線分析儀、CAN總線Wire Shark等外部工具連接時,可以通過CAN USB適配器訪問CAN總線數據,該適配器提供與計算機或PC的USB端口的即時連接。CAN USB適配器也可以通過以太網、互聯網、內聯網從任何地方進行控制。CAN總線Wireshark是一種用于Linux系統的工具,尤其以以太網網絡分析而聞名,它通過使用SocketCAN來顯示CAN消息,SocketCAN是一組驅動程序和網絡堆棧,因此被稱為Linux CAN總線。CAN to USB幫助外部工具從CAN網絡獲取消息,然后用于監控和調試接收或傳輸信息的工具。
但是這些消息是原始格式的。因此,從這些數據記錄器收集的數據使用CAN總線解碼器轉換為按比例縮放的工程值。從數據記錄器收集的數據也可以存儲在SD卡中,這有助于控制車輛設置以提高效率。收集的CAN總線數據可用于車隊管理、研發、診斷等。
用萬用表測試CAN總線
測試是必要的,以檢查任何發生的CAN總線故障,如布線、ECU、CAN網絡中的任何一個組件的電壓供應故障。CAN總線的故障排除,如在CAN總線線路的物理端添加120歐姆的終端電阻,可以診斷出問題。通過用萬用表測試,確保終端電阻是120歐姆,而且電阻是合適的,沒有斷裂,還可以通過將萬用表切換到交流電壓來測試傳輸的數據。
如何判斷汽車是否有CAN總線?
配備CAN總線的車輛包含CAN總線LED和CAN-BUS HID 套件。CAN總線LED與汽車高級系統通信,當此LED關閉時,車輛會發出警告。CAN BUS HID KIT充當DC到AC轉換器,并有助于在最初使用高壓電流打開燈。一旦燈啟動,它需要較低的電壓電流。但是當HID使用低功率時,CAN總線系統會假定燈已關閉并發出警告。為了避免這種情況,使用了HID轉換套件,它與CAN總線系統通信以告知有一個工作燈泡。這些警告告訴我們汽車配備了CAN總線。
CAN總線黑客攻擊
CAN總線黑客攻擊是對消費者的威脅。CAN總線車輛采用了許多無線技術,例如藍牙,用于接聽電話或播放音樂。當車載系統接入車內的CAN總線并具備 Wi-Fi連接能力時,黑客很容易獲得CAN總線接入并能夠控制汽車。Wi-Fi熱點在汽車中很流行,這使得知道汽車IP地址的人可以跟蹤汽車。這導致汽車制造商對CAN總線網絡上的傳輸數據進行保護。
審核編輯:湯梓紅
-
收發器
+關注
關注
10文章
3424瀏覽量
105961 -
CAN
+關注
關注
57文章
2744瀏覽量
463621 -
總線
+關注
關注
10文章
2878瀏覽量
88051
發布評論請先 登錄
相關推薦
評論