LIN協(xié)議在汽車(chē)電子網(wǎng)絡(luò)通訊中廣泛使用,很多用戶(hù)在解碼LIN協(xié)議時(shí),對(duì)LIN協(xié)議不同版本間的差異不太熟悉,可能導(dǎo)致解碼中出現(xiàn)數(shù)據(jù)長(zhǎng)度識(shí)別和校驗(yàn)混亂。
一、LIN協(xié)議起源
LIN是面向汽車(chē)底端分布式應(yīng)用的低成本、低速率的串行通信總線,屬于局部互聯(lián)網(wǎng)。
LIN由汽車(chē)行業(yè)開(kāi)發(fā),用作經(jīng)濟(jì)高效的子總線系統(tǒng),其屬于CAN的下層網(wǎng)絡(luò),是SAE規(guī)范的汽車(chē)A類(lèi)網(wǎng)絡(luò),適用于對(duì)總線性能要求不高的車(chē)身系統(tǒng),如車(chē)門(mén)、車(chē)窗、燈光等智能傳感器、執(zhí)行器的連接和控制,LIN實(shí)現(xiàn)了一種具有成本效益的智能傳感器和執(zhí)行器的通訊方式。
LIN聯(lián)盟成立于1999年,并發(fā)布了LIN1.0版本。最初的成員有奧迪、寶馬、克萊斯勒、摩托羅拉、博世、大眾和沃爾沃等,如下圖2為LIN協(xié)議的發(fā)展史。
二、LIN協(xié)議的數(shù)據(jù)幀結(jié)構(gòu)
LIN協(xié)議數(shù)據(jù)幀結(jié)構(gòu)如圖3所示。
從圖3中可以看到LIN協(xié)議數(shù)據(jù)幀結(jié)構(gòu)由報(bào)文頭、響應(yīng)報(bào)文以及幀間隔組成。其中:
1、報(bào)文頭包含同步間隙、同步域和報(bào)文標(biāo)識(shí)符場(chǎng)(0~63)。
2、響應(yīng)報(bào)文由1-9個(gè)字節(jié)構(gòu)成:其中2、4或8個(gè)字節(jié)的數(shù)據(jù)場(chǎng)和1個(gè)校驗(yàn)和場(chǎng)(LIN1.3)。
3、報(bào)文幀之間有幀間間隔分隔。
4、報(bào)文與響應(yīng)之間有幀內(nèi)響應(yīng)空間分隔。
5、最小幀間間隔和幀內(nèi)響應(yīng)空間均為0。
6、最大長(zhǎng)度收到報(bào)文幀的最大長(zhǎng)度frame_max限制。
那為什么用戶(hù)解碼LIN協(xié)議會(huì)出現(xiàn)數(shù)據(jù)長(zhǎng)度識(shí)別錯(cuò)誤和校驗(yàn)解碼出錯(cuò)問(wèn)題呢?原因是使用了與輸入信號(hào)不對(duì)應(yīng)的LIN協(xié)議版本進(jìn)行解碼,不同版本的LIN協(xié)議存在差異,如下所述。
三、LIN2.0相對(duì)于LIN1.3最主要的差異
支持最多8個(gè)字節(jié)的數(shù)據(jù)序列。
取消了受保護(hù)標(biāo)識(shí)符中的數(shù)據(jù)長(zhǎng)度字段,即傳輸長(zhǎng)度不再受限于ID,并將最后一個(gè)字節(jié)視為校驗(yàn)和。
校驗(yàn)和的驗(yàn)算包括了受保護(hù)標(biāo)識(shí)符。
支持自動(dòng)波特率檢測(cè)功能。
對(duì)零星幀進(jìn)行了定義。
網(wǎng)絡(luò)管理的定時(shí)用秒來(lái)定義,而不是用比特?cái)?shù)來(lái)定義。
簡(jiǎn)化狀態(tài)管理和直接向網(wǎng)絡(luò)匯報(bào),應(yīng)用變得標(biāo)準(zhǔn)化。
增加強(qiáng)制節(jié)點(diǎn)配置命令以及一些可選擇的命令。
增加了診斷功能。
從機(jī)節(jié)點(diǎn)的產(chǎn)品標(biāo)識(shí)已標(biāo)準(zhǔn)化。
對(duì)于解碼來(lái)說(shuō)主要關(guān)注前三點(diǎn)。
圖4 LIN協(xié)議應(yīng)用
四、ZDS2000系列示波器全面支持LIN協(xié)議解碼功能
致遠(yuǎn)電子200M示波器支持LIN1.3、 LIN2.0協(xié)議全內(nèi)存解碼功能,在ZDS2024 Plus中輸入一個(gè)LIN2.0信號(hào),使用LIN1.3和LIN2.0協(xié)議解碼會(huì)有什么樣的不同效果呢?如下圖5所示。
解析:
1、首先LIN2.0信號(hào)中發(fā)送了5段“數(shù)據(jù)序列”,在LIN1.3中只解析了2段數(shù)據(jù)序列,原因是LIN2.0與 LIN1.3的數(shù)據(jù)段存在差異,如下圖6所示。
LIN1.3:ID4和ID5為數(shù)據(jù)長(zhǎng)度標(biāo)識(shí),其將決定后面的數(shù)據(jù)序列的長(zhǎng)度,2、4或8。
LIN2.0:ID4和ID5不再代表數(shù)據(jù)長(zhǎng)度標(biāo)識(shí),后面的數(shù)據(jù)序列長(zhǎng)度不由ID限制,可以是1~8的任意長(zhǎng)度。
2、其次使用LIN1.3解碼LIN2.0協(xié)議出現(xiàn)“Checksum Wrong”的錯(cuò)誤標(biāo)志,代表在校驗(yàn)和場(chǎng)上解碼錯(cuò)誤,原因是LIN2.0的校驗(yàn)包含“標(biāo)識(shí)場(chǎng)”和“數(shù)據(jù)場(chǎng)”,而LIN1.3僅僅只校驗(yàn)“數(shù)據(jù)場(chǎng)”,從而導(dǎo)致使用LIN1.3解碼LIN2.0協(xié)議時(shí)出現(xiàn)校驗(yàn)和場(chǎng)數(shù)據(jù)與所校驗(yàn)的數(shù)據(jù)不對(duì)應(yīng),導(dǎo)致解碼出錯(cuò),如圖7原理所示。
總結(jié)
綜上所示,用戶(hù)在解碼LIN協(xié)議時(shí)應(yīng)使用與之對(duì)應(yīng)的LIN協(xié)議版本。ZDS2022/ZDS2022 Plus與ZDS2024/ZDS2024 Plus示波器支持LIN1.3以及LIN2.0協(xié)議全內(nèi)存解碼功能,更方便用戶(hù)使用,你趕快試試吧。點(diǎn)擊文章左下角“閱讀原文”可查看ZDS2000系列示波器詳細(xì)參數(shù)。