LIN總線歷史 1996年Volvo與Volcano通訊為Volvo S80系列開發(fā)了一種基于UART/SCI的Volcano Lite協(xié)議。 1997年,Motorola與Volvo、Volcano合作改進Volcano Lite協(xié)議,以滿足各種不同的需求,并且制定可以支持各種半導體產(chǎn)品的開發(fā)標準。 1998年12月,Audi、BMW、VW、Benz也加入進來,由此形成了LIN協(xié)會。并在1999年7月發(fā)布了第一版LIN協(xié)議。 什么是LIN總線 LIN是Local Interconnect Network的縮寫,是基于UART/SCI的低成本串行通信協(xié)議,通常用于車門、雨刮器、車燈等對通信速率要求不高的器件,主要是出于節(jié)約成本考慮。 在汽車上LIN網(wǎng)絡在汽車中一般不獨立存在,通常會與上層CAN網(wǎng)絡相連,形成CAN-LIN網(wǎng)關節(jié)點。 LIN總線拓撲 LIN總線拓撲為單線總線,應用于一主多從??偩€電平為12V,速率最高為20kbps。由于物理層限制,一個LIN網(wǎng)絡最多可連接16個節(jié)點,通常不超過12個,且主節(jié)點有且僅有一個。 主節(jié)點包含主機任務和從機任務,從節(jié)點只包含從機任務。 1、調(diào)度總線上幀的傳輸次序; 2、監(jiān)測數(shù)據(jù),處理錯誤; 3、作為標準時鐘參考; 4、接收從機節(jié)點發(fā)出的總線喚醒命令。 LIN報文幀包括幀頭(hearder)與應答(response)兩部分。主機負責發(fā)送至幀頭;從機負責接收幀頭并作出解析,然后決定是發(fā)送應答,還是接收應答或不回復。 幀頭包括同步間隔段、同步段以及 PID(受保護 ID) 段,應答包括數(shù)據(jù)段和校驗和段,其中值 “ 0為顯性電平 ” (Dominant),值“ 1為隱性電平 ” (Recessive),總線上實行 “線-與” 。 下圖幀間隔為幀之間的間隔;應答間隔為幀頭和應答之間的間隔;字節(jié)間間隔包括同步段和受保護 ID段之間的間隔、數(shù)據(jù)段各字節(jié)間之間的間隔以及數(shù)據(jù)段最后一個字節(jié)和校驗和段之間的間隔。下面對幀頭和應答的各部分進行詳細說明。 1、同步間隔段 由于幀中所有的間隔或總線空閑都應該保持隱性電平,且任何段都不會出現(xiàn)大于9位的隱性電平,因此同步間隔可以標志幀的起始。 2、同步段 LIN 同步以下降沿為判斷標志, 同步端采用字節(jié) 0x55(01010101b)。從機節(jié)點可以不采用高精度時鐘,由此帶來的與主節(jié)點的時鐘偏差,通過同步段來調(diào)整。 3、受保護 ID 段 另外依據(jù)不同的幀ID,將幀分為不同的類別,需要注意的是從機的應答幀為一個完整的幀,與幀結構中的“應答”不同。 4、數(shù)據(jù)段 數(shù)據(jù)段可以包含1-8個字節(jié),其中包含有兩種數(shù)據(jù)類型,信號(singal)和診斷消息(diagnostic messages)。信號由信號攜帶幀傳遞,診斷消息由診斷幀傳遞。其發(fā)送順序從最低字節(jié)開始,DATA1。 另外協(xié)議中沒有顯示數(shù)據(jù)長度信息,數(shù)據(jù)長度是由系統(tǒng)設計者根據(jù)幀ID事先約定好的。并且總線上的數(shù)據(jù)是以廣播的形式發(fā)送的,各從節(jié)點根據(jù)需求接收,對于響應而言,通常只有一個發(fā)布節(jié)點,否則就會出現(xiàn)錯誤。事件觸發(fā)幀例外,可能出現(xiàn)0,1,多個發(fā)布節(jié)點。 5、效驗和段 校驗和段是對幀中所傳輸?shù)膬?nèi)容進行校驗 ,分為標準型效驗與增強型效驗。采用標準型還是增強型是由主機節(jié)點管理,發(fā)布節(jié)點和收聽節(jié)點根據(jù)幀ID來判斷采用哪種效驗和。 幀的類型 1、無條件幀 如上圖幀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é)點信息狀態(tài)沒有發(fā)生變化的時候,從機節(jié)點可以不應答主機發(fā)出的幀頭;當有多個節(jié)點信息同時發(fā)生變化的時候,同時應答事件觸發(fā)幀頭會造成總線的沖突。當主機節(jié)點檢測到?jīng)_突時,便會查詢沖突解決進度表來依次向各個節(jié)點發(fā)送無條件幀(無條件幀只有能1個節(jié)點應答)來確定從機節(jié)點的信息狀態(tài)。 與事件觸發(fā)幀關聯(lián)的多個無條件幀需要滿足以下5個條件: 1、數(shù)據(jù)段所包含的數(shù)據(jù)字節(jié)數(shù)等長; 2、使用相同的效驗與類型; 3、數(shù)據(jù)段的第一個字節(jié)為該無條件幀的受保護ID,這樣才能夠知道應答是哪個關聯(lián)的無條件幀發(fā)送出來的; 4、由不同的從機節(jié)點發(fā)布; 5、不能與時間觸發(fā)幀處于同一個進度表中。 3、偶發(fā)幀 偶發(fā)幀時主節(jié)點在同一幀間隙中當自身信號發(fā)生變化時向總線啟動發(fā)送的幀,當存在多個關聯(lián)的應答信號變化,通過事先定義的優(yōu)先級進行仲裁。其出現(xiàn)的情況主要有三種: 1、當關聯(lián)的無條件幀沒有信號發(fā)生變化,該間隙保持沉默; 2、當其中一個關聯(lián)的無條件幀包含的信號發(fā)生了變化,則發(fā)送該關聯(lián)的無條件幀的應答部分 ; 3、當兩個或兩個以上關聯(lián)的無條件幀包含的信號發(fā)生變化,則按照事先定義的優(yōu)先級進行發(fā)送。 4、診斷幀 5、保留幀 保留幀的幀 ID 為 0x3E 和 0x3F,為將來擴展用。 進度表 進度表是幀的調(diào)度表,規(guī)定了總線上幀的傳輸次序以及傳輸時間。進度表位于主機節(jié)點,主機任務根據(jù)應用程需要進行調(diào)度。進度表可以有多個,一般情況下,輪到某個進度表執(zhí)行的時候,從該進度表的入口處開始執(zhí)行,到進度表的最后一個幀時,如果沒有新的進度表啟動則返回到當前進度表的第一個幀開始執(zhí)行;也有可能在執(zhí)行到某個進度表時發(fā)生中斷,跳到另一個進度表后再返回,如事件觸發(fā)幀就是一個典型的例子。 來源:瑞薩的LIN入門書 |
|