標籤:

LIN匯流排入門(Renesas)

之前花了點時間看了一些關於LIN匯流排基礎的內容,把其中的關鍵點提取了出來,在這裡分享給大家。在這裡你可能要問「不都有CAN匯流排了嗎?這個LIN匯流排又是從哪裡來的?」其實理由很簡單,就是CAN匯流排太貴啦!處處都用CAN匯流排的話,那整車的匯流排架構成本將會變得很高!在一些比如車身電子配件的地方(如車窗、後視鏡、大燈、車鎖等),我們不需要報文像CAN匯流排上傳輸的那樣「高速」!各大廠商一拍腦門就研究了這個LIN匯流排!

什麼是LIN匯流排?

LIN(Local Interconnect Network)匯流排是基於UART/SCI(通用非同步收發器/串列介面)的低成本串列通訊協議。其目標定位於車身網路模塊節點間的低端通信,主要用於智能感測器和執行器的串列通信,而這正是CAN匯流排的帶寬和功能所不要求的部分。

由於LIN網路在汽車中一般不獨立存在,通常會與上層CAN網路相連,形成CAN-LIN網關節點。

LIN匯流排的主從關係

LIN匯流排採用的是單線傳輸形式,應用了單主機多從機的概念,匯流排電平一般為12V,傳輸速率最高限制為20kbps。由於物理層的限制,一個LIN網路最多可以連接16個節點。

匯流排任務負責:

(1)調度匯流排上幀的傳輸次序

(2)監測數據,處理錯誤

(3)作為標準時鐘參考

(4)接收從機節點發出的匯流排喚醒命令

從機任務不能直接向匯流排發送數據,需要接受到主節點發送的幀頭後,根據幀頭所包含的信息來判斷:

(1)發送應答

(2)接收應答

(3)既不接收也不應答

LIN的特點

(1)網路由一個主節點與若干個從節點構成。

(2)使用LIN匯流排可以大幅度削減成本。

(3)傳輸具有確定性,傳播時間可以提前計算

(4)LIN具有可預測的EMC(電磁兼容性)性能,為了限制EMC的強度,LIN協議規定最大傳輸速率為20kbps。

(5)LIN匯流排提供信號的配置、處理、識別和診斷功能。

LIN報文幀結構

LIN報文幀包括幀頭(hearder)與應答(response)兩部分。主機負責發送至幀頭;從機負責接收幀頭並作出解析,然後決定是發送應答,還是接收應答或不回復。

幀頭結構包括同步間隔段、同步段、PID段(受保護ID)段,應答部分包括數據段與效驗和段。其中值「0」為顯性電平、「1」為隱性電平,這點與CAN匯流排相類似。在匯流排上實行「線-與」:當匯流排有至少一個節點發送顯性電平時,匯流排呈現顯性電平;所有節點均發送隱性電平或者不發送信息時,匯流排呈隱性電平,即顯性電平起著主導作用。

(1)同步間隔段

同步間隔段至少是由13位的顯性電平組成,由於幀中的所有間隙或者匯流排空閑時匯流排均保持隱性電平狀態。所以同步間隔段可以標誌一個幀的開始。其中同步間隔段的間隔符至少為1位隱性電平。

(2)同步段

LIN同步以下降沿為判斷標誌,採用位元組0x55(01010101b)進行同步。在從機節點上可以不採用高精度的時鐘,由此帶來的偏差,需要通過同步段來進行調整。

(3)PID段

受保護的ID的前6位叫做幀的ID,加上兩個奇偶效驗碼後稱作受保護的ID。幀ID的取值範圍為0x00~0x3f總共64個,幀ID標識了幀的類別和目的地。從機任務會根據幀頭ID作出反應(接收/發送/忽略應答)。其中P0與P1效驗如下(⊕為異或,??為取非):

LIN匯流排根據幀ID號的不同,把報文分為信號攜帶幀、診斷幀、保留幀。

PS:從機應答幀是一個完整的幀,與幀結構中的「應答」不同!

(4)數據段

數據段可以包含1-8個位元組,其中包含有兩種數據類型,信號(singal)和診斷消息(diagnostic messages)。信號由信號攜帶幀傳遞,診斷消息由診斷幀傳遞。

協議中並沒有規定哪一部分顯示數據長度碼的信息(這點與CAN匯流排不同),數據的內容與長度均是由系統設計者根據幀ID事先約定好的。

匯流排上的數據是以廣播形式發出,任何節點均可以收到,但並非對每個節點有用(與CAN相同)。具體到發布與接聽是由哪個節點進行完成這個取決於應用層的軟體配置,一般情況下,對於一個幀中的應答,匯流排上只存在一個發布節點,否則就會出現錯誤。事件觸發幀例外,可能出現0,1,多個發布節點。

(5)效驗和段

效驗和段是為了對幀傳輸內容進行效驗。效驗分為標準型效驗與增強型效驗。採用標準型還是增強型是由主機節點管理,發布節點和收聽節點根據幀ID來判斷採用哪種效驗和。

LIN匯流排波形

上圖展示的是LIN匯流排的通訊方式,可以看出無論什麼時候幀頭總是由主機節點發布,當主機節點想發布數據時,整個幀全部由主機節點發送。當從機節點想發布數據時,幀頭部分由主機節點發布,應答部分由從機節點發布,這樣其餘節點都能收到一個完整的報文幀。可以很直接的觀察到,LIN匯流排的通訊都是由主機節點發起的,只要合理的規定要每個節點的配置,這樣就不會存在匯流排衝突的情況(事件觸發幀衝突時採用採用衝突解決進度表)。

幀類型

(1)無條件幀

無條件幀是具有單一發布節點的,無論信號是否發生變化,幀頭均會被無條件應答的幀。

如上圖中幀ID=0x30應答部分的發布節點為從機節點1,收聽節點為主機節點,應用在從機節點向主機節點報告自身狀態;幀ID=0x31中,應答部分為主機節點,收聽部分為從機節點,應用在主機節點向從機節點發送消息;幀ID=0x32中應答部分的發送節點為從機節點2,收聽節點為從機節點1,應用與從機節點之間的通信。

(2)事件觸發幀

事件觸發幀是主機節點在一個幀間隙中查詢各從機節點的信號是否發生變化時使用的幀。當存在多個發布節點時,通過衝突解決進度表來解決衝突。

當從機節點信號發生變化的頻率較低的時候,主機任務一次次地查詢各個節點信息會佔用一定的帶寬。為了減小帶寬的佔用,引入了事件觸發幀的概念。其主要原理就是:當從機節點信息狀態沒有發生變化的時候,從機節點可以不應答主機發出的幀頭;當有多個節點信息同時發生變化的時候,同時應答事件觸發幀頭會造成匯流排的衝突。當主機節點檢測到衝突時,便會查詢衝突解決進度表來依次向各個節點發送無條件幀(無條件幀只有能1個節點應答)來確定從機節點的信息狀態。

與事件觸發幀關聯的多個無條件幀需要滿足以下5個條件:

數據段所包含的數據位元組數等長

使用相同的效驗與類型

數據段的第一個位元組為該無條件幀的受保護ID,這樣才能夠知道應答是哪個關聯的無條件幀發送出來的

由不同的從機節點發布

不能與時間觸發幀處於同一個進度表中

(3)偶發幀

偶發幀是主機節點在同一幀時隙中當自身信號發生變化時向匯流排啟動發送的幀。當存在多個關聯的應答信號變化時,通過預先設定的的優先順序來仲裁。

與事件觸發幀類似,偶發幀也定義了一組無條件幀。規定偶發幀只有由主機節點發布。偶發幀的傳輸可能出現三種情況:1)當關聯的無條件幀沒有信號發生變化,這是主機連幀頭也不需要發送。2)當關聯的一個無條件幀信號發生變化則發送該幀。3)當有多個無條件幀發生信號變化時,則按照事先規定要的優先順序依次發送。

(4)診斷幀

診斷幀包括主機請求幀和從機應答幀,主要用於配置、識別和診斷。主機請求幀ID=0x3c,應答部分的發布節點為主機節點;從機應答幀ID=0x3d,應答部分的發布節點為從機節點。數據段規定為8個位元組,一律採用標準效驗和。

(5)保留幀

保留幀的ID=0x3e與0x3f,為將來擴張需求用。

進度表

進度表是幀的調度表,規定了匯流排上幀的傳輸次序以及傳輸時間。進度表位於主機節點,主機任務根據應用程需要進行調度。進度表可以有多個,一般情況下,輪到某個進度表執行的時候,從該進度表的入口處開始執行,到進度表的最後一個幀時,如果沒有新的進度表啟動則返回到當前進度表的第一個幀開始執行;也有可能在執行到某個進度表時發生中斷,跳到另一個進度表後再返回,如事件觸發幀就是一個典型的例子。

狀態機的實現

(1)主機狀態機

(2)從機狀態機

從機任務負責發布或者接聽幀的應答狀態,包括連兩個狀態機:同步間隔段與同步段檢查器、幀處理器。

幀處理任務狀態機

後語:

LIN匯流排與CAN匯流排是汽車上最重要的兩種匯流排,其中LIN匯流排在車身電子(BCM)的設計中運用廣泛,也是ECU設計中一個重要的部分。

本文主要來源——Lin入門書(Renesas)


推薦閱讀:

CAN匯流排基礎(下)
奧迪b5或帕薩特b5 20v turbo發動機混合氣過稀故障?

TAG:ECU |