LIN 通信概述
以下是基于瑞薩LIN入門手冊(cè)的簡要概述
一 LIN 是什么
LIN 是 Local Interconnect Network 的縮寫,是基于 UART/SCI(Universal Asynchronous Receiver-Transmitter / Serial Communication Interface,通用異步收發(fā)器/串行通信接口)的低成本串行通信協(xié)議。可用于汽車、家電、辦公設(shè)備等多種領(lǐng)域。本文主要針對(duì) LIN 在分布式的汽車電子網(wǎng)絡(luò)系統(tǒng)中的應(yīng)用。
1996 年,Volvo和Volcano通訊(VCT)為Volvo S80 系列開發(fā)了一種基于UART/SCI的協(xié)議,即Volcano Lite。1997 年,Motorola與Volvo和VCT合作,幫助它們改進(jìn)Volcano Lite協(xié)議以滿足各種不同需求(比如無需晶振的從機(jī)設(shè)備自動(dòng)同步),并制定可以支持各種半導(dǎo)體產(chǎn)品的開放標(biāo)準(zhǔn)。1998 年 12 月,Audi、BMW、Daimler Chrysler和Volkswagen也加入進(jìn)來,由此形成了LIN協(xié)會(huì)(http://www.lin-subbus.org)。開發(fā)LIN標(biāo)準(zhǔn)的目的在于適應(yīng)分層次車內(nèi)網(wǎng)絡(luò)在低端(速度和可靠性要求不高、低成本的場(chǎng)合)的需求。
LIN 的特點(diǎn)
LIN 具有以下特點(diǎn):
(1) 網(wǎng)絡(luò)由一個(gè)主機(jī)節(jié)點(diǎn)和多個(gè)從機(jī)節(jié)點(diǎn)構(gòu)成。
(2) 使用 LIN 可以大幅度的削減成本,表現(xiàn)在以下方面:
● 開放型規(guī)范:規(guī)范可以免費(fèi)從官方網(wǎng)站獲得。
● 硬件成本削減:基于普通 UART/SCI 接口的低成本硬件實(shí)現(xiàn),無需單獨(dú)的硬件模塊支持;從機(jī)節(jié)點(diǎn)無需
高精度時(shí)鐘就可以完成自同步;總線為一根單線電纜。
● 裝配成本削減:LIN 采用了工作流(Work Flow)和現(xiàn)成節(jié)點(diǎn)(Off-the-shelf Node)的概念,將網(wǎng)絡(luò)裝配標(biāo)準(zhǔn)
化,并可通過 LIN 傳輸層進(jìn)行再配置。
● 縮短軟件開發(fā)周期:LIN 協(xié)議將 API(Application Programming Interface,應(yīng)用編程接口)標(biāo)準(zhǔn)化。
(3) 信號(hào)傳輸具有確定性,傳播時(shí)間可以提前計(jì)算出。
(4) LIN 具有可預(yù)測(cè)的 EMC(ElectroMagnetic Compatibility,電磁兼容性)性能。為了限制
EMI(ElectroMagnetic Interference,電磁干擾)強(qiáng)度,LIN 協(xié)議規(guī)定最大位速率為 20kbps。
(5) LIN 提供信號(hào)處理、配置、識(shí)別和診斷四項(xiàng)功能。
LIN 的協(xié)議層
LIN 的幀結(jié)構(gòu)
幀(Frame)包含幀頭(Header)和應(yīng)答(Response)兩部分。主機(jī)任務(wù)負(fù)責(zé)發(fā)送幀頭;從機(jī)任務(wù)接收幀頭并對(duì)幀頭所包含信息進(jìn)行解析,然后決定是發(fā)送應(yīng)答,還是接收應(yīng)答,還是不作任何反應(yīng)。幀在總線上的傳輸如圖 3.1所示。
幀頭包括同步間隔段、同步段以及PID(Protected Identifier,受保護(hù)ID)段,應(yīng)答包括數(shù)據(jù)段和校驗(yàn)和段,如圖 3.2 所示,其中值“0”為顯性電平(Dominant),值“1”為隱性電平(Recessive),總線上實(shí)行“線-與”:當(dāng)總線上有大于等于一個(gè)節(jié)點(diǎn)發(fā)送顯性電平時(shí),總線呈顯性電平;所有的節(jié)點(diǎn)都發(fā)送隱性電平或不發(fā)送信息(不發(fā)送任何信息時(shí)總線默認(rèn)呈隱性電平)時(shí),總線才呈現(xiàn)隱性電平,即顯性電平起主導(dǎo)作用。圖中幀間隔為幀之間的間隔;應(yīng)答間隔為幀頭和應(yīng)答之間的間隔;字節(jié)間間隔包括同步段和受保護(hù)ID段之間的間隔、數(shù)據(jù)段各字節(jié)間之間的間隔以及數(shù)據(jù)段最后一個(gè)字節(jié)和校驗(yàn)和段之間的間隔。下面對(duì)幀頭和應(yīng)答的各部分進(jìn)行詳細(xì)說明。
幀的類型
無條件幀(Unconditional Frame)
無條件幀是具有單一發(fā)布節(jié)點(diǎn),無論信號(hào)是否發(fā)生變化,幀頭都被無條件應(yīng)答的幀。
事件觸發(fā)幀(Event Triggered Frame)
事件觸發(fā)幀是主機(jī)節(jié)點(diǎn)在一個(gè)幀時(shí)隙中查詢各從機(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è)信號(hào)會(huì)占用一定的帶寬。為了減小帶寬的占用,引入了事件觸發(fā)幀的概念。
偶發(fā)幀(Sporadic Frame)
偶發(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í),通過事先設(shè)定的優(yōu)先級(jí)來仲裁。
診斷幀(Diagnostic Frame)
診斷幀包括主機(jī)請(qǐng)求幀和從機(jī)應(yīng)答幀,主要用于配置、識(shí)別和診斷用。主機(jī)請(qǐng)求幀(Master Request Frame,MRF),幀 ID = 0x3C,應(yīng)答部分的發(fā)布節(jié)點(diǎn)為主機(jī)節(jié)點(diǎn);從機(jī)應(yīng)答幀(Slave Response Frame,SRF),幀 ID = 0x3D,應(yīng)答部分的發(fā)布節(jié)點(diǎn)為從機(jī)節(jié)點(diǎn)。數(shù)據(jù)段規(guī)定為 8 個(gè)字節(jié),一律采用標(biāo)準(zhǔn)型校驗(yàn)和。
保留幀(Reserved Frame)
保留幀的幀 ID 為 0x3E 和 0x3F,為將來擴(kuò)展用。
信號(hào)處理、配置、識(shí)別和診斷
傳輸層
傳輸層的任務(wù)單一,就是充當(dāng)一個(gè)“翻譯官”,把來自診斷服務(wù)的消息(Message)“翻譯”成協(xié)議層可以處理的PDU (Packet Data Unit,分組數(shù)據(jù)單元),或者反過來,把協(xié)議層收到的 PDU“翻譯”成診斷服務(wù)需要的消息。消息到 PDU 的轉(zhuǎn)換過程稱為拆分(Packing),PDU 到消息的轉(zhuǎn)換過程稱為重組(Unpacking)。PDU 對(duì)應(yīng)著幀結(jié)構(gòu)的數(shù)據(jù)段,并通過診斷幀發(fā)送或接收。
PDU 結(jié)構(gòu)
為滿足汽車行業(yè)的要求,LIN 傳輸層 PDU 的格式與 ISO 制定的基于 CAN 網(wǎng)絡(luò)的診斷標(biāo)準(zhǔn)(參照參考資料[9])非常相似(是 ISO 標(biāo)準(zhǔn)的子集)。這種兼容性大大減少了在 CAN 和 LIN 之間轉(zhuǎn)換數(shù)據(jù)格式的工作量,降低了對(duì)節(jié)點(diǎn)計(jì)算能力的要求。
從發(fā)送格式上,PDU 單元可分為單幀(Single Frame,SF)、首幀(First Frame,FF)和續(xù)幀(Consecutive Frames,CF)三種。從發(fā)送源上,主機(jī)發(fā)送請(qǐng)求 PDU,從機(jī)發(fā)送應(yīng)答 PDU。
傳輸層通信
應(yīng)用層發(fā)出的消息如果長度不超過單幀的容量,傳輸層會(huì)按單幀的格式交給協(xié)議層發(fā)送。傳輸層收到的單幀也會(huì)直接作為消息送往應(yīng)用層;如果消息長度超過單幀的容量,傳輸層先要把消息拆分成首幀和續(xù)幀并排好次序,然后再交給協(xié)議層依次發(fā)送。反過來,協(xié)議層收到的首幀和續(xù)幀,傳輸層先要按照接收次序?qū)⑵渲亟M為消息,最后交給應(yīng)用層處理。
LIN 傳輸層只能按順序接收續(xù)幀。
LIN 傳輸層具備出錯(cuò)重傳功能。
LIN 應(yīng)用層
概述
LIN 應(yīng)用層提供信號(hào)處理、配置、識(shí)別和診斷四項(xiàng)功能。配置、識(shí)別和診斷功能又包含若干項(xiàng)目,稱為服務(wù)(Service)。為了區(qū)別,每項(xiàng)服務(wù)都有固定、唯一的服務(wù)代號(hào)(Service ID,SID)。
① 信號(hào)通過信號(hào)攜帶幀通信
② 配置服務(wù)通過傳輸層,以單幀的形式通信
③ 識(shí)別服務(wù)通過傳輸層,以單幀的形式通信
④ 基于信號(hào)的診斷服務(wù)
⑤ 診斷傳輸層,通過傳輸層通信,需要使用復(fù)幀的形式通信
⑥ 用戶自定義的診斷
為便于理解本圖,后文對(duì)每項(xiàng)功能都分別進(jìn)行了詳細(xì)描述并提出了工作模型的概念。LIN 應(yīng)用層的配置、識(shí)別和診斷都是針對(duì)邏輯節(jié)點(diǎn)(Logical Node)的。邏輯節(jié)點(diǎn)是能夠?qū)碜灾鳈C(jī)節(jié)點(diǎn)和/或診斷設(shè)備的服務(wù)請(qǐng)求作出響應(yīng)的功能實(shí)體。為了區(qū)別不同的邏輯節(jié)點(diǎn),LIN 定義了 NAD(Node Address for Diagnose,診斷地址)。第 1 章介紹了物理節(jié)點(diǎn)(Physical Node)、從機(jī)任務(wù)和接口(Interface)的概念。對(duì)于一個(gè)物理節(jié)點(diǎn)來說,從機(jī)任務(wù)和接口對(duì)應(yīng)著實(shí)現(xiàn)幀收發(fā)的軟件和硬件實(shí)體,而邏輯節(jié)點(diǎn)則代表了配置、識(shí)別和診斷方面的能力。物理節(jié)點(diǎn)、從機(jī)任務(wù)以及接口是一一對(duì)應(yīng)的,但是物理節(jié)點(diǎn)可以包括 1 個(gè)或者多個(gè)邏輯節(jié)點(diǎn)。
信號(hào)處理功能
信號(hào)處理功能是指應(yīng)用層可以不經(jīng)過傳輸層,直接從協(xié)議層獲取或修改網(wǎng)絡(luò)中的信號(hào)。這些信號(hào)由NCF(Node Capability File,節(jié)點(diǎn)性能文件)定義,既可以是工作參數(shù)(例如溫度、壓力的測(cè)量值、繼電器的開合狀態(tài)等),也可以是狀態(tài)標(biāo)志(例如某信號(hào)攜帶幀的收發(fā)狀態(tài))。
配置功能
LIN 規(guī)范規(guī)定,每個(gè)邏輯節(jié)點(diǎn)都應(yīng)該有 NAD。在網(wǎng)絡(luò)運(yùn)行期間,任意兩個(gè)邏輯節(jié)點(diǎn)的 NAD 都必須不同,否則就會(huì)產(chǎn)生沖突。此外,每個(gè)邏輯節(jié)點(diǎn)都要能處理帶有某些 PID 的幀。由此可見,NAD 和 PID 分別與邏輯節(jié)點(diǎn)建立了一種映射關(guān)系,LIN 規(guī)范把 NAD 和 PID 的這樣一種組合稱為邏輯節(jié)點(diǎn)的配置項(xiàng)(Configuration)。一個(gè)邏輯節(jié)點(diǎn)可以有一個(gè)以上的配置項(xiàng),但在網(wǎng)絡(luò)運(yùn)行期間,每個(gè)邏輯節(jié)點(diǎn)只能有一個(gè)配置項(xiàng)有效。
配置功能是指 LIN 的主機(jī)節(jié)點(diǎn)能自動(dòng)地給所有邏輯節(jié)點(diǎn)選擇配置項(xiàng),消除 NAD 和 PID 分配中存在的沖突,使網(wǎng)絡(luò)正常工作。配置功能是確保各節(jié)點(diǎn)協(xié)調(diào)運(yùn)作的內(nèi)部功能,包含分配 NAD、分配 PID 等服務(wù)。配置功能通過傳輸層完成配置服務(wù)。
識(shí)別功能
識(shí)別功能是指主機(jī)節(jié)點(diǎn)能夠獲取邏輯節(jié)點(diǎn)的信息,例如產(chǎn)品代號(hào)等。借助識(shí)別功能,主機(jī)節(jié)點(diǎn)和邏輯節(jié)點(diǎn)還可以實(shí)現(xiàn)一些自定義的操作。
診斷功能
診斷功能是指 LIN 網(wǎng)絡(luò)之外的診斷設(shè)備可以直接連接 LIN 的主機(jī)節(jié)點(diǎn),或者通過外部的其它網(wǎng)絡(luò)(例如ISO11898 定義的 CAN 網(wǎng)絡(luò),參照參考資料[8])連接主機(jī)節(jié)點(diǎn),連接后,診斷設(shè)備可以按規(guī)定的診斷協(xié)議(例如ISO15765 規(guī)范,參照參考資料[9])與 LIN 的邏輯節(jié)點(diǎn)通訊。與配置功能相比,診斷功能是 LIN 網(wǎng)絡(luò)作為一個(gè)整體對(duì)外呈現(xiàn)的可配置、可訪問的屬性。
總結(jié)
- 上一篇: 超声波测距仪编程_超声波测距仪程序
- 下一篇: java 计算π_Java实现计算圆周率