1. 什么是LIN總線?
LIN(Local Interconnect Network)總線是基于UART/SCI(通用異步收發(fā)器/串行接口)的低成本串行通訊協(xié)議。其目標(biāo)定位于車身網(wǎng)絡(luò)模塊節(jié)點(diǎn)間的低端通信,主要用于智能傳感器和執(zhí)行器的串行通信,而這正是CAN總線的帶寬和功能所不要求的部分。
2. CAN/LIN總線區(qū)別
由于LIN網(wǎng)絡(luò)在汽車中一般不獨(dú)立存在,通常會(huì)與上層CAN網(wǎng)絡(luò)相連,形成CAN-LIN網(wǎng)關(guān)節(jié)點(diǎn)。
2.1.LIN總線的主從關(guān)系
LIN總線采用的是單線傳輸形式,應(yīng)用了單主機(jī)多從機(jī)(有無主動(dòng)上報(bào)的支持?)的概念,總線電平一般為12V,傳輸速率最高限制為20kbps。由于物理層的限制,一個(gè)LIN網(wǎng)絡(luò)最多可以連接16個(gè)節(jié)點(diǎn)。
總線任務(wù)負(fù)責(zé):
調(diào)度總線上幀的傳輸次序
監(jiān)測(cè)數(shù)據(jù),處理錯(cuò)誤
作為標(biāo)準(zhǔn)時(shí)鐘參考(不是異步通信?)
接收從機(jī)節(jié)點(diǎn)發(fā)出的總線喚醒命令
從機(jī)任務(wù)不能直接向總線發(fā)送數(shù)據(jù),需要接受到主節(jié)點(diǎn)發(fā)送的幀頭后,根據(jù)幀頭所包含的信息來判斷:
發(fā)送應(yīng)答
接收應(yīng)答
既不接收也不應(yīng)答
LIN的特點(diǎn)
網(wǎng)絡(luò)由一個(gè)主節(jié)點(diǎn)與若干個(gè)從節(jié)點(diǎn)構(gòu)成
使用LIN總線可以大幅度削減成本(CAN和Lin都需要收發(fā)器,但是Lin屬于單線制在線束上節(jié)省)
傳輸具有確定性,傳播時(shí)間可以提前計(jì)算
LIN具有可預(yù)測(cè)的EMC(電磁兼容性)性能,為了限制EMC的強(qiáng)度,LIN協(xié)議規(guī)定最大傳輸速率為20kbps
LIN總線提供信號(hào)的配置、處理、識(shí)別和診斷功能(這些都是UART不具備的,可LIN是怎么實(shí)現(xiàn)的呢?)
3.LIN報(bào)文幀結(jié)構(gòu)
LIN報(bào)文幀包括幀頭(hearder)與應(yīng)答(response)兩部分。主機(jī)負(fù)責(zé)發(fā)送至幀頭;從機(jī)負(fù)責(zé)接收幀頭并作出解析,然后決定是發(fā)送應(yīng)答,還是接收應(yīng)答或不回復(fù)。
(主機(jī))幀頭結(jié)構(gòu)包括同步間隔段、同步段、PID段(受保護(hù)ID)段,應(yīng)答部分包括數(shù)據(jù)段與效驗(yàn)和段。其中值“0”為顯性電平、“1”為隱性電平,這點(diǎn)與CAN總線相類似。在總線上實(shí)行“線-與”:當(dāng)總線有至少一個(gè)節(jié)點(diǎn)發(fā)送顯性電平時(shí),總線呈現(xiàn)顯性電平;所有節(jié)點(diǎn)均發(fā)送隱性電平或者不發(fā)送信息時(shí),總線呈隱性電平,即顯性電平起著主導(dǎo)作用。
3.1.1.同步間隔段
同步間隔段至少是由13位的顯性電平組成,由于幀中的所有間隙或者總線空閑時(shí)總線均保持隱性電平狀態(tài)。所以同步間隔段可以標(biāo)志一個(gè)幀的開始。其中同步間隔段的間隔符至少為1位隱性電平。
3.1.2.同步段
LIN同步以下降沿為判斷標(biāo)志,采用字節(jié)0x55(01010101b)進(jìn)行同步。在從機(jī)節(jié)點(diǎn)上可以不采用高精度的時(shí)鐘,由此帶來的偏差,需要通過同步段來進(jìn)行調(diào)整。
3.1.3.PID段
受保護(hù)的ID的前6位叫做幀ID,加上兩個(gè)奇偶效驗(yàn)碼后稱作受保護(hù)的ID。幀ID的取值范圍為0x00~0x3f總共64個(gè),幀ID標(biāo)識(shí)了幀的類別和目的地。從機(jī)任務(wù)會(huì)根據(jù)幀頭ID作出反應(yīng)(接收/發(fā)送/忽略應(yīng)答)。其中P0與P1效驗(yàn)如下:
LIN總線根據(jù)幀ID號(hào)的不同,把報(bào)文分為信號(hào)攜帶幀、診斷幀、保留幀。
PS:從機(jī)應(yīng)答幀是一個(gè)完整的幀,與(主節(jié)點(diǎn))幀結(jié)構(gòu)中的“應(yīng)答”不同!
3.1.4.數(shù)據(jù)段
數(shù)據(jù)段可以包含1-8個(gè)字節(jié),其中包含有兩種數(shù)據(jù)類型,信號(hào)(singal)和診斷消息(diagnostic messages)。信號(hào)由信號(hào)攜帶幀傳遞,診斷消息由診斷幀傳遞。
協(xié)議中并沒有規(guī)定哪一部分顯示數(shù)據(jù)長(zhǎng)度碼的信息(這點(diǎn)與CAN總線不同),數(shù)據(jù)的內(nèi)容與長(zhǎng)度均是由系統(tǒng)設(shè)計(jì)者根據(jù)幀ID事先約定好的。
總線上的數(shù)據(jù)是以廣播形式發(fā)出,任何節(jié)點(diǎn)均可以收到,但并非對(duì)每個(gè)節(jié)點(diǎn)有用(與CAN相同)。具體到發(fā)布與接聽是由哪個(gè)節(jié)點(diǎn)進(jìn)行完成這個(gè)取決于應(yīng)用層的軟件配置,一般情況下,對(duì)于一個(gè)幀中的應(yīng)答,總線上只存在一個(gè)發(fā)布節(jié)點(diǎn),否則就會(huì)出現(xiàn)錯(cuò)誤。事件觸發(fā)幀例外,可能出現(xiàn)0,1,多個(gè)發(fā)布節(jié)點(diǎn)。
3.1.5.效驗(yàn)和段
效驗(yàn)和段是為了對(duì)幀傳輸內(nèi)容進(jìn)行效驗(yàn)。效驗(yàn)分為標(biāo)準(zhǔn)型效驗(yàn)與增強(qiáng)型效驗(yàn)。采用標(biāo)準(zhǔn)型還是增強(qiáng)型是由主機(jī)節(jié)點(diǎn)管理,發(fā)布節(jié)點(diǎn)和收聽節(jié)點(diǎn)根據(jù)幀ID來判斷采用哪種效驗(yàn)和。
4.LIN總線波形
5.LIN總線的通訊
上圖展示的是LIN總線的通訊方式,可以看出無論什么時(shí)候幀頭總是由主機(jī)節(jié)點(diǎn)發(fā)布,當(dāng)主機(jī)節(jié)點(diǎn)想發(fā)布數(shù)據(jù)時(shí),整個(gè)幀全部由主機(jī)節(jié)點(diǎn)發(fā)送。當(dāng)從機(jī)節(jié)點(diǎn)想發(fā)布數(shù)據(jù)時(shí),幀頭部分由主機(jī)節(jié)點(diǎn)發(fā)布,應(yīng)答部分由從機(jī)節(jié)點(diǎn)發(fā)布(主機(jī)怎么知道從機(jī)節(jié)點(diǎn)想發(fā)布數(shù)據(jù),那肯定是主機(jī)節(jié)點(diǎn)無數(shù)據(jù)可發(fā),故只發(fā)了幀頭?),這樣其余節(jié)點(diǎn)都能收到一個(gè)完整的報(bào)文幀。可以很直接的觀察到,LIN總線的通訊都是由主機(jī)節(jié)點(diǎn)發(fā)起的,只要合理的規(guī)定要每個(gè)節(jié)點(diǎn)的配置,這樣就不會(huì)存在總線沖突的情況(事件觸發(fā)幀沖突時(shí)采用采用沖突解決進(jìn)度表)。
幀類型
5.1.無條件幀
無條件幀是具有單一發(fā)布節(jié)點(diǎn)的,無論信號(hào)是否發(fā)生變化,幀頭均會(huì)被無條件應(yīng)答的幀。
如上圖中幀ID=0x30應(yīng)答部分的發(fā)布節(jié)點(diǎn)為從機(jī)節(jié)點(diǎn)1,收聽節(jié)點(diǎn)為主機(jī)節(jié)點(diǎn),應(yīng)用在從機(jī)節(jié)點(diǎn)向主機(jī)節(jié)點(diǎn)報(bào)告自身狀態(tài);幀ID=0x31中,應(yīng)答部分為主機(jī)節(jié)點(diǎn),收聽部分為從機(jī)節(jié)點(diǎn),應(yīng)用在主機(jī)節(jié)點(diǎn)向從機(jī)節(jié)點(diǎn)發(fā)送消息;幀ID=0x32中應(yīng)答部分的發(fā)送節(jié)點(diǎn)為從機(jī)節(jié)點(diǎn)2,收聽節(jié)點(diǎn)為從機(jī)節(jié)點(diǎn)1,應(yīng)用與從機(jī)節(jié)點(diǎn)之間的通信。
5.2.事件觸發(fā)幀
事件觸發(fā)幀是主機(jī)節(jié)點(diǎn)在一個(gè)幀間隙中查詢各從機(jī)節(jié)點(diǎn)的信號(hào)是否發(fā)生變化時(shí)使用的幀。當(dāng)存在多個(gè)發(fā)布節(jié)點(diǎn)時(shí),通過沖突解決進(jìn)度表來解決沖突。
當(dāng)從機(jī)節(jié)點(diǎn)信號(hào)發(fā)生變化的頻率較低的時(shí)候,主機(jī)任務(wù)一次次地查詢各個(gè)節(jié)點(diǎn)信息會(huì)占用一定的帶寬。為了減小帶寬的占用,引入了事件觸發(fā)幀的概念。其主要原理就是:當(dāng)從機(jī)節(jié)點(diǎn)信息狀態(tài)沒有發(fā)生變化的時(shí)候,從機(jī)節(jié)點(diǎn)可以不應(yīng)答主機(jī)發(fā)出的幀頭;當(dāng)有多個(gè)節(jié)點(diǎn)信息同時(shí)發(fā)生變化的時(shí)候,同時(shí)應(yīng)答事件觸發(fā)幀頭會(huì)造成總線的沖突。當(dāng)主機(jī)節(jié)點(diǎn)檢測(cè)到?jīng)_突時(shí),便會(huì)查詢沖突解決進(jìn)度表來依次向各個(gè)節(jié)點(diǎn)發(fā)送無條件幀(無條件幀只有能1個(gè)節(jié)點(diǎn)應(yīng)答)來確定從機(jī)節(jié)點(diǎn)的信息狀態(tài)。
與事件觸發(fā)幀關(guān)聯(lián)的多個(gè)無條件幀需要滿足以下5個(gè)條件:
數(shù)據(jù)段所包含的數(shù)據(jù)字節(jié)數(shù)等長(zhǎng) 使用相同的效驗(yàn)與類型 數(shù)據(jù)段的第一個(gè)字節(jié)為該無條件幀的受保護(hù)ID,這樣才能夠知道應(yīng)答是哪個(gè)關(guān)聯(lián)的無條件幀發(fā)送出來的 由不同的從機(jī)節(jié)點(diǎn)發(fā)布 不能與時(shí)間觸發(fā)幀處于同一個(gè)進(jìn)度表中
5.2.1.偶發(fā)幀
偶發(fā)幀是主機(jī)節(jié)點(diǎn)在同一幀時(shí)隙中當(dāng)自身信號(hào)發(fā)生變化時(shí)向總線啟動(dòng)發(fā)送的幀。當(dāng)存在多個(gè)關(guān)聯(lián)的應(yīng)答信號(hào)變化時(shí),通過預(yù)先設(shè)定的的優(yōu)先級(jí)來仲裁。與事件觸發(fā)幀類似,偶發(fā)幀也定義了一組無條件幀。規(guī)定偶發(fā)幀只有由主機(jī)節(jié)點(diǎn)發(fā)布。
偶發(fā)幀的傳輸可能出現(xiàn)三種情況:
當(dāng)關(guān)聯(lián)的無條件幀沒有信號(hào)發(fā)生變化,這是主機(jī)連幀頭也不需要發(fā)送。
當(dāng)關(guān)聯(lián)的一個(gè)無條件幀信號(hào)發(fā)生變化則發(fā)送該幀。
當(dāng)有多個(gè)無條件幀發(fā)生信號(hào)變化時(shí),則按照事先規(guī)定要的優(yōu)先級(jí)依次發(fā)送。
5.2.2.診斷幀
診斷幀包括主機(jī)請(qǐng)求幀和從機(jī)應(yīng)答幀,主要用于配置、識(shí)別和診斷。主機(jī)請(qǐng)求幀ID=0x3c,應(yīng)答部分的發(fā)布節(jié)點(diǎn)為主機(jī)節(jié)點(diǎn);從機(jī)應(yīng)答幀ID=0x3d,應(yīng)答部分的發(fā)布節(jié)點(diǎn)為從機(jī)節(jié)點(diǎn)。數(shù)據(jù)段規(guī)定為8個(gè)字節(jié),一律采用標(biāo)準(zhǔn)效驗(yàn)和。
5.2.3.保留幀
保留幀的ID=0x3e與0x3f,為將來擴(kuò)張需求用。
5.3.進(jìn)度表
進(jìn)度表是幀的調(diào)度表,規(guī)定了總線上幀的傳輸次序以及傳輸時(shí)間。進(jìn)度表位于主機(jī)節(jié)點(diǎn),主機(jī)任務(wù)根據(jù)應(yīng)用程需要進(jìn)行調(diào)度。進(jìn)度表可以有多個(gè),一般情況下,輪到某個(gè)進(jìn)度表執(zhí)行的時(shí)候,從該進(jìn)度表的入口處開始執(zhí)行,到進(jìn)度表的最后一個(gè)幀時(shí),如果沒有新的進(jìn)度表啟動(dòng)則返回到當(dāng)前進(jìn)度表的第一個(gè)幀開始執(zhí)行;也有可能在執(zhí)行到某個(gè)進(jìn)度表時(shí)發(fā)生中斷,跳到另一個(gè)進(jìn)度表后再返回,如事件觸發(fā)幀就是一個(gè)典型的例子。
6.狀態(tài)機(jī)的實(shí)現(xiàn)
6.1.主機(jī)狀態(tài)機(jī)
6.2.從機(jī)狀態(tài)機(jī)
從機(jī)任務(wù)負(fù)責(zé)發(fā)布或者接聽?zhēng)膽?yīng)答狀態(tài),包括連兩個(gè)狀態(tài)機(jī):同步間隔段與同步段檢查器、幀處理器。
6.3.從機(jī)任務(wù)狀態(tài)機(jī)
編輯:黃飛
?
評(píng)論
查看更多