UDS診斷是汽車電子開發(fā)的核心技能,而理解其底層報文傳輸機(jī)制是入門關(guān)鍵,本文快速了解ISO-15765(2004版)傳輸層協(xié)議。
什么是UDS診斷協(xié)議UDS(Unified Diagnostic Services,統(tǒng)一診斷服務(wù))是汽車領(lǐng)域通用的診斷協(xié)議標(biāo)準(zhǔn)。它并非單一協(xié)議,而是分層架構(gòu):應(yīng)用層遵循ISO-14229,定義診斷設(shè)備與ECU之間的功能服務(wù)(如讀取故障碼、刷寫軟件);傳輸層遵循ISO-15765,負(fù)責(zé)將上層功能請求拆解為CAN/CAN FD總線可傳輸?shù)膱笪膸⒐芾硎瞻l(fā)流程。簡言之,14229決定"做什么",15765決定"怎么傳"。
ISO-15765-2004的四種幀類型ISO-15765(2004版)規(guī)范了8字節(jié)長度CAN報文交互的數(shù)據(jù)打包規(guī)則,根據(jù)傳輸層定義,報文可分為單幀、多幀首幀、多幀連續(xù)幀、流控幀四種。- 單幀:數(shù)據(jù)段第一個字節(jié)為0開頭,"長度標(biāo)識"占4個位。比如02代表當(dāng)前發(fā)送單幀,有效字節(jié)長度為2個字節(jié)。
- 多幀首幀:數(shù)據(jù)段第一個字節(jié)為1打頭,"長度標(biāo)識"占12個位。比如13 FF表示當(dāng)前報文為多幀首幀,后續(xù)有效內(nèi)容長度0x3FF字節(jié)。
- 多幀連續(xù)幀:首字節(jié)以0x21打頭,累加直到發(fā)完2F后從20重新開始。
- 流控幀:首字節(jié)以3打頭,常見為30緊隨著塊大小和幀間隔。如果都是00則不做限制。
交互流程請求和應(yīng)答都可以是單幀。單幀適用于短數(shù)據(jù)傳輸,首字節(jié)直接標(biāo)識有效長度。假如多幀該如何交互?可以看這個經(jīng)典交互圖:發(fā)送方想要發(fā)起多幀,首先給出首幀請求,等待接收方回復(fù)流控幀應(yīng)答。發(fā)送方再根據(jù)流控幀將連續(xù)幀發(fā)出去。假如一次流控不足以發(fā)完剩余報文,則需再次等待下一條流控,直到請求發(fā)送完成。
小結(jié)掌握ISO-15765(2004版)傳輸層協(xié)議,是理解UDS報文交互邏輯的基礎(chǔ)。單幀處理短數(shù)據(jù),多幀通過首幀、流控、連續(xù)幀的協(xié)作完成長數(shù)據(jù)傳輸,四種幀類型的首字節(jié)特征與長度規(guī)則是診斷調(diào)試中的核心判據(jù)。還想了解哪些CAN總線知識?歡迎評論區(qū)留言。 | USB接口CANFD卡 USBCANFD-400U |
4路CANFD,2路LIN XCP/CCP標(biāo)定 兼容CAN2.0A/B模式收發(fā)
|