LIN总线协议简介
文章直接復制,修改了部分錯別字,主要用于個人看方便。原文網址:https://blog.csdn.net/zhanshen112/article/details/80672458
花點時間看了一些關于LIN總線基礎的內容,把其中的關鍵點提取了出來,在這里分享給大家。在這里你可能要問“不都有CAN總線了嗎?這個LIN總線又是從哪里來的?”其實理由很簡單,就是CAN總線太貴啦!處處都用CAN總線的話,那整車的總線架構成本將會變得很高!在一些比如車身電子配件的地方(如車窗、后視鏡、大燈、車鎖等),我們不需要報文像CAN總線上傳輸的那樣“高速”!各大廠商一拍腦門就研究了這個LIN總線!
什么是LIN總線?
LIN(Local Interconnect Network)總線是基于UART/SCI(通用異步收發(fā)器/串行接口)的低成本串行通訊協議。其目標定位于車身網絡模塊節(jié)點間的低端通信,主要用于智能傳感器和執(zhí)行器的串行通信,而這正是CAN總線的帶寬和功能所不要求的部分。
CAN/LIN總線區(qū)別
由于LIN網絡在汽車中一般不獨立存在,通常會與上層CAN網絡相連,形成CAN-LIN網關節(jié)點。
LIN總線的主從關系
LIN總線采用的是單線傳輸形式,應用了單主機多從機的概念,總線電平一般為12V,傳輸速率最高限制為20kbps。由于物理層的限制,一個LIN網絡最多可以連接16個節(jié)點。
總線任務負責:
1.調度總線上幀的傳輸次序
2.監(jiān)測數據,處理錯誤
3.作為標準時鐘參考
4.接收從機節(jié)點的總線喚醒命令
從機任務不能直接向總線發(fā)送數據,需要接受到主節(jié)點發(fā)送的幀頭后,根據幀頭所包含的信息來判斷:
1. 發(fā)送應答
2. 接收應答
3. 既不接收也不應答
LIN的特點
1. 網絡由一個主節(jié)點與若干個從節(jié)點構成。
2. 使用LIN總線可以大幅度削減成本。
3. 傳輸具有確定性,傳播時間可以提前計算
4. LIN具有可預測的EMC(電磁兼容性)性能,為了限制EMC的強度,LIN協議規(guī)定最大傳輸速率為20kbps。
5. LIN總線提供信號的配置、處理、識別和診斷功能。
LIN報文幀結構
LIN報文幀包括幀頭(hearder)與應答(response)兩部分。主機負責發(fā)送至幀頭;從機負責接收幀頭并作出解析,然后決定是發(fā)送應答,還是接收應答或不回復。
幀頭結構包括同步間隔段、同步段、PID段(受保護ID)段,應答部分包括數據段與效驗和段。其中值“0”為顯性電平、“1”為隱性電平,這點與CAN總線相類似。在總線上實行“線-與”:當總線有至少一個節(jié)點發(fā)送顯性電平時,總線呈現顯性電平;所有節(jié)點均發(fā)送隱性電平或者不發(fā)送信息時,總線呈隱性電平,即顯性電平起著主導作用。
(1)同步間隔段
同步間隔段至少是由13位的顯性電平組成,由于幀中的所有間隙或者總線空閑時總線均保持隱性電平狀態(tài)。所以同步間隔段可以標志一個幀的開始。其中同步間隔段的間隔符至少為1位隱性電平。
(2)同步段
LIN同步以下降沿為判斷標志,采用字節(jié)0x55(01010101b)進行同步。在從機節(jié)點上可以不采用高精度的時鐘,由此帶來的偏差,需要通過同步段來進行調整。
(3)PID段
受保護的ID的前6位叫做幀的ID,加上兩個奇偶效驗碼后稱作受保護的ID。幀ID的取值范圍為0x00~0x3f總共64個,幀ID標識了幀的類別和目的地。從機任務會根據幀頭ID作出反應(接收/發(fā)送/忽略應答)。其中P0與P1效驗如下:
LIN總線根據幀ID號的不同,把報文分為信號攜帶幀、診斷幀、保留幀。
PS:從機應答幀是一個完整的幀,與幀結構中的“應答”不同!
(4)數據段
數據段可以包含1-8個字節(jié),其中包含有兩種數據類型,信號(singal)和診斷消息(diagnostic messages)。信號由信號攜帶幀傳遞,診斷消息由診斷幀傳遞。
協議中并沒有規(guī)定哪一部分顯示數據長度碼的信息(這點與CAN總線不同),數據的內容與長度均是由系統(tǒng)設計者根據幀ID事先約定好的。
總線上的數據是以廣播形式發(fā)出,任何節(jié)點均可以收到,但并非對每個節(jié)點有用(與CAN相同)。具體到發(fā)布與接聽是由哪個節(jié)點進行完成這個取決于應用層的軟件配置,一般情況下,對于一個幀中的應答,總線上只存在一個發(fā)布節(jié)點,否則就會出現錯誤。事件觸發(fā)幀例外,可能出現0,1,多個發(fā)布節(jié)點。
(5)效驗和段
效驗和段是為了對幀傳輸內容進行效驗。效驗分為標準型效驗與增強型效驗。采用標準型還是增強型是由主機節(jié)點管理,發(fā)布節(jié)點和收聽節(jié)點根據幀ID來判斷采用哪種效驗和。
LIN總線波形
LIN總線的通訊
上圖展示的是LIN總線的通訊方式,可以看出無論什么時候幀頭總是由主機節(jié)點發(fā)布,當主機節(jié)點想發(fā)布數據時,整個幀全部由主機節(jié)點發(fā)送。當從機節(jié)點想發(fā)布數據時,幀頭部分由主機節(jié)點發(fā)布,應答部分由從機節(jié)點發(fā)布,這樣其余節(jié)點都能收到一個完整的報文幀。可以很直接的觀察到,LIN總線的通訊都是由主機節(jié)點發(fā)起的,只要合理的規(guī)定要每個節(jié)點的配置,這樣就不會存在總線沖突的情況(事件觸發(fā)幀沖突時采用采用沖突解決進度表)。
幀類型
1. 無條件幀
無條件幀是具有單一發(fā)布節(jié)點的,無論信號是否發(fā)生變化,幀頭均會被無條件應答的幀。
如上圖中幀ID=0x30應答部分的發(fā)布節(jié)點為從機節(jié)點1,收聽節(jié)點為主機節(jié)點,應用在從機節(jié)點向主機節(jié)點報告自身狀態(tài);幀ID=0x31中,應答部分為主機節(jié)點,收聽部分為從機節(jié)點,應用在主機節(jié)點向從機節(jié)點發(fā)送消息;幀ID=0x32中應答部分的發(fā)送節(jié)點為從機節(jié)點2,收聽節(jié)點為從機節(jié)點1,應用與從機節(jié)點之間的通信。
2. 事件觸發(fā)幀
事件觸發(fā)幀是主機節(jié)點在一個幀間隙中查詢各從機節(jié)點的信號是否發(fā)生變化時使用的幀。當存在多個發(fā)布節(jié)點時,通過沖突解決進度表來解決沖突。
當從機節(jié)點信號發(fā)生變化的頻率較低的時候,主機任務一次次地查詢各個節(jié)點信息會占用一定的帶寬。為了減小帶寬的占用,引入了事件觸發(fā)幀的概念。其主要原理就是:當從機節(jié)點信息狀態(tài)沒有發(fā)生變化的時候,從機節(jié)點可以不應答主機發(fā)出的幀頭;當有多個節(jié)點信息同時發(fā)生變化的時候,同時應答事件觸發(fā)幀頭會造成總線的沖突。當主機節(jié)點檢測到沖突時,便會查詢沖突解決進度表來依次向各個節(jié)點發(fā)送無條件幀(無條件幀只有能1個節(jié)點應答)來確定從機節(jié)點的信息狀態(tài)。
與事件觸發(fā)幀關聯的多個無條件幀需要滿足以下5個條件:
- 數據段所包含的數據字節(jié)數等長
- 使用相同的效驗與類型
- 數據段的第一個字節(jié)為該無條件幀的受保護ID,這樣才能夠知道應答是哪個關聯的無條件幀發(fā)送出來的
- 由不同的從機節(jié)點發(fā)布
- 不能與時間觸發(fā)幀處于同一個進度表中
3. 偶發(fā)幀
偶發(fā)幀是主機節(jié)點在同一幀時隙中當自身信號發(fā)生變化時向總線啟動發(fā)送的幀。當存在多個關聯的應答信號變化時,通過預先設定的的優(yōu)先級來仲裁。與事件觸發(fā)幀類似,偶發(fā)幀也定義了一組無條件幀。規(guī)定偶發(fā)幀只有由主機節(jié)點發(fā)布。偶發(fā)幀的傳輸可能出現三種情況:1)當關聯的無條件幀沒有信號發(fā)生變化,這是主機連幀頭也不需要發(fā)送。2)當關聯的一個無條件幀信號發(fā)生變化則發(fā)送該幀。3)當有多個無條件幀發(fā)生信號變化時,則按照事先規(guī)定要的優(yōu)先級依次發(fā)送。
4. 診斷幀
診斷幀包括主機請求幀和從機應答幀,主要用于配置、識別和診斷。主機請求幀ID=0x3c,應答部分的發(fā)布節(jié)點為主機節(jié)點;從機應答幀ID=0x3d,應答部分的發(fā)布節(jié)點為從機節(jié)點。數據段規(guī)定為8個字節(jié),一律采用標準效驗和。
5. 保留幀
保留幀的ID=0x3e與0x3f,為將來擴張需求用。
進度表
進度表是幀的調度表,規(guī)定了總線上幀的傳輸次序以及傳輸時間。進度表位于主機節(jié)點,主機任務根據應用程需要進行調度。進度表可以有多個,一般情況下,輪到某個進度表執(zhí)行的時候,從該進度表的入口處開始執(zhí)行,到進度表的最后一個幀時,如果沒有新的進度表啟動則返回到當前進度表的第一個幀開始執(zhí)行;也有可能在執(zhí)行到某個進度表時發(fā)生中斷,跳到另一個進度表后再返回,如事件觸發(fā)幀就是一個典型的例子。
狀態(tài)機的實現
主狀態(tài)機
從狀態(tài)機
從機任務負責發(fā)布或者接聽幀的應答狀態(tài),包括連兩個狀態(tài)機:同步間隔段與同步段檢查器、幀處理器。
從機任務狀態(tài)機
后語:
LIN總線與CAN總線是汽車上最重要的兩種總線,其中LIN總線在車身電子(BCM)的設計中運用廣泛,也是ECU設計中一個重要的部分。
參考文獻:Lin入門書(Renesas)
轉載自:http://iron.applinzi.com/paper/23
總結
- 上一篇: 四边形围栅栏c语言长度,不同结构围油栏拦
- 下一篇: 开机后让妲己给你加油打气