嵌入式系統(tǒng)應(yīng)用在汽車(chē)領(lǐng)域快速增長(zhǎng)。許多車(chē)輛設(shè)計(jì)使用CAN進(jìn)行電子控制單元 (ECU) 之間以及ECU和傳感器,執(zhí)行器和顯示器的通信。從制動(dòng)系統(tǒng)到信息娛樂(lè)系統(tǒng)的子系統(tǒng)都提供實(shí)時(shí)通信的功能。
工程師通常都會(huì)使用示波器來(lái)抓取CAN總線數(shù)據(jù),與通信采集卡不同,示波器不僅可以進(jìn)行協(xié)議分析,還可以看到物理層傳輸情況,從軟硬件兩方面來(lái)幫助工程師了解分析總線情況。
一、什么是 CAN 總線?
控制器局域網(wǎng)絡(luò) (CAN) 為最初針對(duì)汽車(chē)應(yīng)用設(shè)計(jì)的總線結(jié)構(gòu),但是,它也在其他領(lǐng)域找到用武之地。CAN 總線是在不同類型電纜(具體取決于應(yīng)用)上運(yùn)行的均衡(差分)2 線接口。此標(biāo)準(zhǔn)規(guī)定了幾種不同數(shù)據(jù)速率,1 Mb/s 為 CAN 的最快速率。最新版本 CAN FD(靈活數(shù)據(jù)速率)已經(jīng)將傳輸速度升至 10 Mb/s,同時(shí)還提高了包有效載荷數(shù)據(jù)字段最大長(zhǎng)度。為了保持信號(hào)質(zhì)量,總線需要在電纜的兩端使用 120Ω 終端電阻,以確保阻抗匹配。
自 1980 年代推出以來(lái),CAN 總線一直用于在電子控制單元 (ECU) 之間以及與車(chē)輛傳感器之間傳輸數(shù)據(jù)。
二、聯(lián)網(wǎng)汽車(chē)中的 CAN 總線
近年來(lái),汽車(chē)中產(chǎn)生、傳輸和接收的數(shù)據(jù)量大大增加,并且在未來(lái)還會(huì)繼續(xù)增加。如今,許多汽車(chē)都包含 80 多個(gè)電子控制單元 (ECU),它們通過(guò)不同的總線網(wǎng)絡(luò)連接。在未來(lái)幾年,我們預(yù)計(jì)這個(gè)數(shù)字將超過(guò) 100,因?yàn)橐恍┖廊A汽車(chē)使用的 ECU 數(shù)量已達(dá)到 150 個(gè)。
汽車(chē)子系統(tǒng)間的集成度提高意味著除了處理傳感器和致動(dòng)器信號(hào)外,還有許多 ECU 同時(shí)在更多的串行總線上通信。例如,ECU 通過(guò) CAN(對(duì)于關(guān)鍵系統(tǒng))和 LIN(對(duì)于優(yōu)先級(jí)較低的控件,例如車(chē)窗和后視鏡)通信極為常見(jiàn)。
三、CAN 總線故障排除
由于駕駛員的安全依賴于這些系統(tǒng)的正常通信,因此確保 CAN 總線配置正確至關(guān)重要。幸運(yùn)的是,當(dāng)您有了合適的工具,排除 CAN 總線故障就變得很容易。在這個(gè)簡(jiǎn)短的指南中,我們將介紹故障排除技巧和快速完成任務(wù)所需的工具。
四、如何用示波器調(diào)試解碼的 CAN 總線協(xié)議
1、CAN總線觸發(fā)
進(jìn)行CAN總線觸發(fā)時(shí),若使用默認(rèn)的上升沿觸發(fā),會(huì)出現(xiàn)波形跳動(dòng),不能穩(wěn)定觸發(fā)在屏幕中間的情況,此時(shí)可以使用總線觸發(fā)。
2、設(shè)置CAN / CAN FD總線解碼
在配備 CAN 解碼和觸發(fā)功能的泰克示波器上,按下前面板總線按鈕可以設(shè)置示波器的CAN總線解碼信息。為了示波器能夠正常解碼,需要輸入一些基本參數(shù):
CAN標(biāo)準(zhǔn)
信號(hào)類型
輸入通道
比特率
電壓閾值
采樣點(diǎn)(以位時(shí)間的百分比表示)
CAN總線是差分信號(hào)。示波器可以使用無(wú)源探頭進(jìn)行總線解碼,若使用差分探頭則可以提高信號(hào)的保真度和抗噪性。
3、了解CAN/CAN FD總線解碼信息
CAN信號(hào)被解碼并顯示為總線波形(底部)和事件表(頂部)
CAN報(bào)文解碼后的元素,會(huì)使用不同顏色來(lái)顯示。
對(duì)于工程師,時(shí)間表格式可能更有用。這種帶有時(shí)間戳的總線活動(dòng)顯示可以很容易地與軟件列表進(jìn)行對(duì)應(yīng),并提供傳輸速度的簡(jiǎn)單計(jì)算。
事件表還提供與波形顯示的鏈接。您可以單擊表格中顯示的報(bào)文,將會(huì)自動(dòng)跳轉(zhuǎn)到對(duì)應(yīng)波形,配合旋鈕可以放大相應(yīng)的總線信號(hào)和生成的解碼總線波形,并顯示在屏幕的下半部分。
4、DBC文件解析
.dbc文件是用來(lái)描述CAN總線通訊信息數(shù)據(jù)的一種文件,其中包含了CAN總線中協(xié)議數(shù)據(jù)及其所代表的具體意義。
在汽車(chē)路試中,對(duì)于車(chē)輛錯(cuò)誤故障信息,需對(duì)CAN報(bào)文數(shù)據(jù)進(jìn)行實(shí)時(shí)DBC解析,定位問(wèn)題點(diǎn)。如上圖,就是通過(guò).dbc文件將CAN報(bào)文轉(zhuǎn)換成了和電機(jī)狀態(tài)和其當(dāng)前狀態(tài)值,便于工程師進(jìn)行實(shí)時(shí)分析和調(diào)試。
5、CAN總線觸發(fā)
完整的CAN/CAN FD總線觸發(fā)功能包括以下觸發(fā)器類型。
幀開(kāi)頭:幀起始位置
幀類型:數(shù)據(jù)幀、遠(yuǎn)程幀、錯(cuò)誤幀
標(biāo)識(shí)符:標(biāo)準(zhǔn)格式有11 個(gè)位的標(biāo)識(shí)符(ID),擴(kuò)展格式有29 個(gè)位的ID
數(shù)據(jù):數(shù)據(jù)的內(nèi)容,一幀可發(fā)送0~8個(gè)字節(jié)的數(shù)據(jù)
幀結(jié)尾:幀結(jié)束位置
錯(cuò)誤:例如ACK錯(cuò)誤、位填充錯(cuò)誤等
可以根據(jù)實(shí)際需求選擇不同的觸發(fā)位置,便于快速定位和分析數(shù)據(jù)。
6、CAN總線數(shù)據(jù)搜索
在配備CAN/CAN FD解碼的泰克示波器上可以搜索CAN總線活動(dòng),您可以使用搜索功能來(lái)查找所有總線滿足特定搜索條件的事件,并確定發(fā)生了多少次。
如上圖所示,搜索函數(shù)設(shè)置為自動(dòng)搜索十六進(jìn)制的數(shù)據(jù)值為00的數(shù)據(jù)。它發(fā)現(xiàn)并標(biāo)記了10次出現(xiàn)。
7、dbc.數(shù)據(jù)搜索
除了搜索十六進(jìn)制和二進(jìn)制值外,當(dāng)使用符號(hào)解碼時(shí),可以加載.dbc文件??梢宰詣?dòng)搜索解析后的數(shù)據(jù)和信息。
如上圖所示,搜索找到帶有MOTOR_STATUS_speed_kph信號(hào)的MOTOR_STATUS消息值為44.476公里/小時(shí)。
由于總線協(xié)議手動(dòng)解碼非常耗時(shí),并且很容易出錯(cuò)。東方中科合作伙伴—泰克的汽車(chē)總線解碼和觸發(fā)包針對(duì) CAN、CAN FD、LIN 和 FlexRay 等常用 ECU 總線提供直觀的自動(dòng)解碼和觸發(fā)功能。上圖為CAN總線解碼圖,長(zhǎng)達(dá)10s的2萬(wàn)幀CAN 信號(hào)被解碼并顯示為總線波形(底部)和事件表、(頂部)。