隨著汽車工業的不斷發展,汽車電子控制單元逐漸增多,各電控單元之間的信號交換更為復雜。而CAN總線可將汽車內部各電控單元之間連接成一個局域網絡,實現了信息的共享,大大優化了整車的布線。
接(jie)下來,我們(men)將繼續(xu)為大家分享(xiang)CAN相(xiang)關技術知識。
CAN的分層架(jia)構
它(ta)由三層(ceng)組成(cheng),即應用層(ceng)、數據鏈路層(ceng)和(he)物理(li)層(ceng)。
? 應(ying)用(yong)層(ceng):該層(ceng)與操作(zuo)系統或CAN設備的(de)應(ying)用(yong)程(cheng)序交互(hu)。
? 數據鏈路層:它在(zai)發(fa)送(song)、接收和(he)驗證數據方面將實際數據連接到協議(yi)。
? 物理(li)層:它(ta)代表實際的硬件(jian),即CAN控制器(qi)和收(shou)發(fa)器(qi)。
CAN物理層特性(xing)
CAN物(wu)理層(ceng)被(bei)分為三個部分:在(zai)CAN控制器芯片中實現的(de)物(wu)理編碼,指定收發器特(te)性的(de)物(wu)理介(jie)質(zhi)附件,物(wu)理介(jie)質(zhi)依賴子層(ceng),這是(shi)特(te)定的(de)應用,沒有標準化。
圖1. CAN總線接線圖
物(wu)理編碼子層
PCS包括比特(te)編碼和解碼、比特(te)定時(shi)。它(ta)為收發器(qi)芯片提供連接單(dan)元接口,并包含Tx和Rx引腳,位級錯(cuo)誤也(ye)通過位填充(chong)來處理。
位時序
出于時序目的(de),CAN總線上(shang)的(de)每個位都劃分成至(zhi)少4個時間份額(e),時間份額(e)邏輯上(shang)劃分成4段(duan):
1. 同步(bu)段
2. 傳播段
3. 相位緩(huan)沖段1
4. 相位緩(huan)沖段2
圖2. CAN位時序(xu)
同步段
1個(ge)時間量子長度(du),用于多個(ge)連接在總線(xian)上的單元,通(tong)過此(ci)段(duan)實現時序調整,當總線(xian)電(dian)(dian)壓電(dian)(dian)平發生變化(顯性到隱(yin)性或隱(yin)性到顯性)時,預計該段(duan)會(hui)出現位沿。
傳播(bo)段
用于補償(chang)網絡上節點之(zhi)間的物理延(yan)(yan)遲(chi),包括發送單元的輸(shu)出延(yan)(yan)遲(chi)、總線上信號的傳播延(yan)(yan)遲(chi)、接收單元的輸(shu)入延(yan)(yan)遲(chi)。
相位緩沖段
相(xiang)(xiang)位(wei)緩沖(chong)段(duan)用(yong)于補償節點間的晶振誤差,又(you)分為相(xiang)(xiang)位(wei)緩沖(chong)段(duan)1(PS1)和相(xiang)(xiang)位(wei)緩沖(chong)段(duan)2(PS2),在這(zhe)個時(shi)間段(duan)的末端進行總(zong)線狀態的采樣。兩個相(xiang)(xiang)位(wei)緩沖(chong)段(duan)PS1和PS2用(yong)于補償總(zong)線上的邊沿相(xiang)(xiang)位(wei)誤差。
采樣點
采(cai)樣點(dian)是(shi)位時(shi)(shi)(shi)間(jian)內(nei)的(de)一個(ge)時(shi)(shi)(shi)間(jian)點(dian),在該(gai)時(shi)(shi)(shi)間(jian)點(dian),讀取總線(xian)電(dian)平并進行分析。位時(shi)(shi)(shi)間(jian)內(nei)的(de)采(cai)樣點(dian)決定CAN總線(xian)電(dian)壓是(shi)隱性還是(shi)顯性。以位時(shi)(shi)(shi)間(jian)的(de)百分比表示,位置從(cong)位時(shi)(shi)(shi)間(jian)的(de)起(qi)點(dian)開始計算(suan),位于階(jie)段1和階(jie)段2之間(jian)。
處理位(wei)級(ji)錯(cuo)誤
位數填充
CAN協議遵(zun)循NRZ編(bian)碼進(jin)行(xing)傳輸。邏輯電(dian)平在位(wei)間隔之間不發生變化。CAN需要一個(ge)邏輯電(dian)平的轉換來進(jin)行(xing)再同步。因此,在5個(ge)相同的連續比特之后,將發送1個(ge)相反邏輯電(dian)平的比特。這就是所謂的東西位(wei),接收器可以識別它(ta)。
位錯誤
一(yi)個正在發(fa)送比(bi)(bi)特(te)的(de)(de)節點總是監(jian)控總線,如果發(fa)射器發(fa)送的(de)(de)比(bi)(bi)特(te)與總線上的(de)(de)比(bi)(bi)特(te)值不同,則會產(chan)生一(yi)個錯誤(wu)幀。
物理介質依(yi)賴子層
該層在(zai)CAN收發(fa)器(qi)(qi)芯(xin)片中實(shi)現,通過(guo)Tx和(he)(he)Rx引(yin)腳(jiao)從CAN控(kong)制(zhi)器(qi)(qi)獲得輸(shu)入,輸(shu)出驅動CANH和(he)(he)CANL線(xian)。收發(fa)器(qi)(qi)負責不同的(de)(de)比特率(lv)(lv),CAN總線(xian)速度(du)指的(de)(de)是(shi)CAN總線(xian)通信速率(lv)(lv)。最大的(de)(de)CAN總線(xian)通信速率(lv)(lv)是(shi)1Mbit/sec。對于特殊的(de)(de)應用,一些CAN控(kong)制(zhi)器(qi)(qi)將處理(li)更(geng)高的(de)(de)速度(du),超過(guo)1Mbit/sec。低速的(de)(de)CAN通信速率(lv)(lv)是(shi)125kbits/sec。
與介質有(you)關的(de)子(zi)層
依賴介質(zhi)的子層是高度特定的應(ying)用(yong),不同連接器(qi)的引腳分配標準化屬于這一層,各種(zhong)連接器(qi)為(wei)DB9、OBD II。
CAN總線DB9引腳布局
CAN總(zong)線通常通過連接(jie)器訪問。
圖(tu)3. CAN總線DB9引腳分配
引腳(jiao)1:無定義
引(yin)腳2:CAN_L
引腳3:CAN GND
引腳4:無定(ding)義(yi)
引腳(jiao)5:CAN_SHLD
引腳(jiao)6:GND
引腳7:CAN_H
引腳8:無定義
引腳9:CAN_V+
各種微(wei)控制器(qi)中的(de)CAN總線支(zhi)持(chi)
微控制(zhi)器應具(ju)有(you)CAN硬(ying)(ying)件(jian)和(he)軟件(jian),提(ti)供CAN驅(qu)動程(cheng)序(xu)以實現通信。Python-CAN庫也可(ke)用(yong)于(yu)為微控制(zhi)器的硬(ying)(ying)件(jian)組(zu)件(jian)提(ti)供抽象的驅(qu)動程(cheng)序(xu),并用(yong)于(yu)通過CAN網絡(luo)發(fa)送和(he)接收消息。Python CAN總線也用(yong)于(yu)測試硬(ying)(ying)件(jian)和(he) CAN 總線數據記錄(lu)。
用(yong)于Arduino的(de)CAN總線屏蔽
? CANbus Shield采(cai)用帶有SPI接口(kou)和CAN收發(fa)器的CAN總線控制器,為Arduino提供CAN總線能力(li)。
? 帶有CAN總線的Arduino有助(zhu)于從ECU獲(huo)取車速、油耗、溫(wen)度(du)等信息。
? Arduino CAN庫用于通過CAN總線發(fa)送和接(jie)收(shou)CAN消息。
樹莓派CAN總(zong)線:
樹莓(mei)派沒有(you)特定(ding)的硬件(jian),即CAN控(kong)制器和CAN收發(fa)器來支(zhi)持CAN協(xie)議。樹莓(mei)派軟件(jian)不支(zhi)持CAN總線(xian),樹莓(mei)派支(zhi)持通(tong)過 SPI 接口進行(xing) CAN 通(tong)信。
樹莓派通過SPI接口連接到板子支持的外(wai)部CAN控(kong)制(zhi)器(qi),CAN控(kong)制(zhi)器(qi)通過Rx和(he)Tx線連接到CAN收(shou)發器(qi)。
CAN控制器(qi)示例:SJA100、MCP2515
CAN收發器示(shi)例:TJA1040、MCP2551
ACM32 CAN總線(xian):
ACM32-F0/F4芯片內(nei)置1路~2路CAN控制(zhi)器,并提供對應的(de)CAN總線接口驅(qu)動庫,搭配外部的(de)CAN收發器,保證(zheng)CAN總線數據通訊的(de)安全可靠。
如何讀取(qu)CAN總線數(shu)據?
當CAN總(zong)線(xian)與(yu)(yu)Microchip CAN總(zong)線(xian)分析(xi)儀、CAN總(zong)線(xian)Wire Shark等外部(bu)工具(ju)連接時,可以(yi)通(tong)過CAN USB適配器(qi)訪問(wen)CAN總(zong)線(xian)數據,該適配器(qi)提供與(yu)(yu)計算機或PC的USB端口的即時連接。CAN USB適配器(qi)也可以(yi)通(tong)過以(yi)太網(wang)、互(hu)聯網(wang)、內聯網(wang)從任(ren)何地方進行(xing)控制。CAN總(zong)線(xian)Wireshark是一種(zhong)用(yong)于Linux系統的工具(ju),尤其以(yi)以(yi)太網(wang)網(wang)絡(luo)分析(xi)而聞(wen)名(ming),它通(tong)過使用(yong)SocketCAN來顯示CAN消(xiao)息(xi)(xi),SocketCAN是一組驅動程序和網(wang)絡(luo)堆(dui)棧,因此被稱為(wei)Linux CAN總(zong)線(xian)。CAN to USB幫助(zhu)外部(bu)工具(ju)從CAN網(wang)絡(luo)獲取消(xiao)息(xi)(xi),然(ran)后用(yong)于監控和調(diao)試接收或傳(chuan)輸信息(xi)(xi)的工具(ju)。
但是這(zhe)些消息是原(yuan)始(shi)格(ge)式的(de)(de)。因此,從這(zhe)些數據(ju)(ju)記(ji)錄器(qi)收(shou)(shou)集的(de)(de)數據(ju)(ju)使用CAN總線解碼器(qi)轉換為按比例縮(suo)放(fang)的(de)(de)工程值。從數據(ju)(ju)記(ji)錄器(qi)收(shou)(shou)集的(de)(de)數據(ju)(ju)也(ye)可(ke)以存儲在(zai)SD卡(ka)中(zhong),這(zhe)有助于控制(zhi)車輛設(she)置以提(ti)高效率。收(shou)(shou)集的(de)(de)CAN總線數據(ju)(ju)可(ke)用于車隊管理、研發、診斷等。
用萬用表(biao)測試CAN總線(xian)
測(ce)試是必要的(de)(de)(de)(de),以(yi)檢查任何(he)發生的(de)(de)(de)(de)CAN總(zong)線(xian)(xian)故(gu)障(zhang),如布線(xian)(xian)、ECU、CAN網絡中(zhong)的(de)(de)(de)(de)任何(he)一個組件的(de)(de)(de)(de)電(dian)(dian)壓供應(ying)故(gu)障(zhang)。CAN總(zong)線(xian)(xian)的(de)(de)(de)(de)故(gu)障(zhang)排除(chu),如在CAN總(zong)線(xian)(xian)線(xian)(xian)路的(de)(de)(de)(de)物(wu)理(li)端(duan)添加(jia)120歐(ou)姆(mu)的(de)(de)(de)(de)終端(duan)電(dian)(dian)阻(zu)(zu),可以(yi)診斷(duan)出問題。通(tong)(tong)過用萬用表(biao)(biao)測(ce)試,確保終端(duan)電(dian)(dian)阻(zu)(zu)是120歐(ou)姆(mu),而且電(dian)(dian)阻(zu)(zu)是合適的(de)(de)(de)(de),沒有斷(duan)裂,還(huan)可以(yi)通(tong)(tong)過將(jiang)萬用表(biao)(biao)切換到(dao)交流電(dian)(dian)壓來測(ce)試傳輸的(de)(de)(de)(de)數據。
如(ru)何判(pan)斷汽車是否(fou)有CAN總線(xian)?
配備CAN總(zong)(zong)線(xian)的(de)車輛包含CAN總(zong)(zong)線(xian)LED和CAN-BUS HID 套件。CAN總(zong)(zong)線(xian)LED與(yu)汽(qi)車高級系(xi)統(tong)通(tong)信(xin),當此LED關閉(bi)時,車輛會發出警告(gao)。CAN BUS HID KIT充(chong)當DC到AC轉換(huan)器,并(bing)(bing)有助(zhu)于在最初使(shi)用高壓電流打(da)開(kai)燈。一旦燈啟(qi)動,它需要(yao)較低(di)的(de)電壓電流。但是當HID使(shi)用低(di)功率時,CAN總(zong)(zong)線(xian)系(xi)統(tong)會假(jia)定燈已關閉(bi)并(bing)(bing)發出警告(gao)。為了避(bi)免這種情況,使(shi)用了HID轉換(huan)套件,它與(yu)CAN總(zong)(zong)線(xian)系(xi)統(tong)通(tong)信(xin)以告(gao)知有一個工作燈泡。這些警告(gao)告(gao)訴我們汽(qi)車配備了CAN總(zong)(zong)線(xian)。
CAN總線黑客攻擊(ji)
CAN總線(xian)黑(hei)客攻擊是對消費者的(de)威脅(xie)。CAN總線(xian)車(che)輛(liang)采用了許(xu)多無線(xian)技術,例如藍牙(ya),用于接(jie)聽電話或播放(fang)音(yin)樂。當(dang)車(che)載系統接(jie)入車(che)內的(de)CAN總線(xian)并具(ju)備 Wi-Fi連接(jie)能(neng)力時,黑(hei)客很(hen)容易(yi)獲得(de)CAN總線(xian)接(jie)入并能(neng)夠(gou)控制汽車(che)。Wi-Fi熱點在汽車(che)中很(hen)流行,這使得(de)知道汽車(che)IP地址的(de)人可以跟蹤汽車(che)。這導致汽車(che)制造商對CAN總線(xian)網絡上的(de)傳(chuan)輸數據進(jin)行保護。
*內容來源自(zi)PathPartner Technology,版權(quan)歸(gui)原作者所有,如涉(she)及版權(quan)問(wen)題請聯系溝通
如需(xu)銷售咨詢(xun),請聯系: