Lin协议开发流程
目錄
1.首先有幾個(gè)基本概念:
2.基本流程:
其他信息:
1. 進(jìn)度表
1.1幀時(shí)隙
2 .主/從機(jī)節(jié)點(diǎn)與主/從機(jī)任務(wù)
3.幀的結(jié)構(gòu)
4.幀在總線上的傳輸
5.幀的分類
5.1 無條件幀(Unconditional Frame)
5.2事件觸發(fā)幀(Event Triggered Frame)
5.3 偶發(fā)幀(Sporadic Frame)
5.4 診斷幀(Diagnostic Frame)
1.首先有幾個(gè)基本概念:
1)LDF(LIN Configuration Description File):LDF文件描述了一個(gè)完整的LIN簇包括主/從節(jié)點(diǎn)的模式選擇以及處理LIN簇的信息。
2)NPF(Node Private Description File):NPF文件包含的信息包括LIN節(jié)點(diǎn):比如節(jié)點(diǎn)名稱、接口的數(shù)量,單片機(jī)的時(shí)鐘頻率,所用得通信信道(如SCI通道)和端口(例如GPIO端口),等所需的能夠完整描述節(jié)點(diǎn)的信息。
2.基本流程:
首先編寫LDF和NPF,然后通過節(jié)點(diǎn)配置工具將二者生成節(jié)點(diǎn)配置代碼(.c和.h),接下來和LIN驅(qū)動代碼一起由編譯器生成目標(biāo)代碼。
?
其他信息:
1. 進(jìn)度表
(處于主機(jī)節(jié)點(diǎn)的)主機(jī)任務(wù)會根據(jù)進(jìn)度表輸送幀頭。進(jìn)度表具體規(guī)定了每個(gè)幀頭的標(biāo)識符以及一個(gè)幀與下一個(gè)幀之間的間隔。主機(jī)應(yīng)用可以使用不同的進(jìn)度表,并在它們之間進(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)度表規(guī)定的入口處開始順序執(zhí)行,到進(jìn)度表的最后一個(gè)幀時(shí),如果沒有新的進(jìn)度表啟動,則返回到當(dāng)前的進(jìn)度表第一個(gè)幀循環(huán)執(zhí)行;也有可能在執(zhí)行某個(gè)進(jìn)度表當(dāng)中發(fā)生中斷,執(zhí)行另一個(gè)進(jìn)度表后再返回,如事件觸發(fā)幀的沖突解決過程就是一個(gè)典型的例子,如下圖示:
進(jìn)度表除規(guī)定了幀ID的傳輸次序外,還規(guī)定了幀時(shí)隙(Frame Slot)的大小。幀時(shí)隙是進(jìn)度表規(guī)定的一個(gè)幀的幀頭起始到下一個(gè)的幀的幀頭起始的時(shí)間。每個(gè)幀的幀時(shí)隙都可以不同,一個(gè)幀時(shí)隙對應(yīng)了進(jìn)度表的一個(gè)入口。
1.1幀時(shí)隙
其中TFrame_Maximum為幀在總線上傳輸?shù)淖畲髸r(shí)間。抖動(Jitter)為幀的同步間隔段的下降沿與幀時(shí)隙起始時(shí)刻相差的時(shí)間。時(shí)基(Time Base)為LIN子網(wǎng)的最小計(jì)時(shí)單位,通常設(shè)定為5ms或10ms。幀時(shí)隙必須為時(shí)基的整數(shù)倍,并且起始于時(shí)基的開始時(shí)刻(稱為時(shí)基的節(jié)拍(Tick)),切換到另外一個(gè)進(jìn)度表時(shí)一定要等到當(dāng)前幀時(shí)隙的結(jié)束。
2 .主/從機(jī)節(jié)點(diǎn)與主/從機(jī)任務(wù)
LIN 的拓?fù)浣Y(jié)構(gòu)為單線總線,應(yīng)用了單一主機(jī)多從機(jī)的概念。總線電平為 12V,傳輸位速率(Bitrate)最高為20kbps。由于物理層限制,一個(gè)LIN網(wǎng)絡(luò)最多可以連接16個(gè)節(jié)點(diǎn),典型應(yīng)用一般都在12個(gè)節(jié)點(diǎn)以下,主機(jī)節(jié)點(diǎn)有且只有一個(gè),從機(jī)節(jié)點(diǎn)有1到15個(gè)。主機(jī)節(jié)點(diǎn)(Master Node)包含主機(jī)任務(wù)(Master Task)和從機(jī)任務(wù)(Slave Task),從機(jī)節(jié)點(diǎn)(Slave Node)只包含從機(jī)任務(wù),如下圖所示:
主機(jī)任務(wù)負(fù)責(zé):
(1) 調(diào)度總線上幀的傳輸次序;
(2) 監(jiān)測數(shù)據(jù),處理錯誤;
(3) 作為標(biāo)準(zhǔn)時(shí)鐘參考;
(4) 接收從機(jī)節(jié)點(diǎn)發(fā)出的總線喚醒命令。
從機(jī)任務(wù)不能夠主動發(fā)送數(shù)據(jù),需要接收主機(jī)發(fā)送的幀頭(幀的起始部分,參照3.1節(jié)的圖3.1),根據(jù)幀頭所包含的信息(這里指幀ID,詳細(xì)內(nèi)容參照3.1.3節(jié))判斷:
(1) 發(fā)送應(yīng)答(幀中除幀頭外剩下的部分,參照3.1節(jié)的圖3.1);
(2) 接收應(yīng)答;
(3) 既不接收也不發(fā)送應(yīng)答。
?
3.幀的結(jié)構(gòu)
幀(Frame)包含幀頭(Header)和應(yīng)答(Response)兩部分。如下圖所示:
4.幀在總線上的傳輸
主機(jī)任務(wù)負(fù)責(zé)發(fā)送幀頭;從機(jī)任務(wù)接收幀頭并對幀頭
所包含信息進(jìn)行解析,然后決定是發(fā)送應(yīng)答,還是接收應(yīng)答,還是不作任何反應(yīng)。幀在總線上的傳輸如圖 3.1
所示。
5.幀的分類
5.1 無條件幀(Unconditional Frame)
無條件幀是具有單一發(fā)布節(jié)點(diǎn),無論信號是否發(fā)生變化,幀頭都被無條件應(yīng)答的幀。
無條件幀在主機(jī)任務(wù)分配給它的固定的幀時(shí)隙(參照 3.3 節(jié))中傳輸。總線上一旦有幀頭發(fā)送出去,必須有從
機(jī)任務(wù)作應(yīng)答(即無條件發(fā)送應(yīng)答),如下圖所示,其中列出的幀 ID 的值只是為了舉例說明,協(xié)議并未強(qiáng)制規(guī)
定。
聯(lián)的兩個(gè)無條件幀的幀 ID 分別是 0x11 和 0x12,這些幀 ID 的值只是為了舉例說明,協(xié)議并未強(qiáng)制規(guī)定。幀 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) 1 向主機(jī)節(jié)點(diǎn)報(bào)告自身某信號的狀態(tài)。幀 ID = 0x31 應(yīng)答部分的發(fā)布節(jié)點(diǎn)為主機(jī)節(jié)點(diǎn),收聽節(jié)點(diǎn)為從機(jī)節(jié)點(diǎn) 1 和從機(jī)節(jié)點(diǎn) 2。典型應(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ā)幀(Event Triggered Frame)
事件觸發(fā)幀是主機(jī)節(jié)點(diǎn)在一個(gè)幀時(shí)隙(參照 3.3 節(jié))中查詢各從機(jī)節(jié)點(diǎn)的信號是否發(fā)生變化時(shí)使用的幀,當(dāng)存
在多個(gè)發(fā)布節(jié)點(diǎn)時(shí),通過沖突解決進(jìn)度表(參照 3.3 節(jié))來解決沖突。當(dāng)從機(jī)節(jié)點(diǎn)信號發(fā)生變化的頻率較低時(shí),主機(jī)任務(wù)一次次地輪詢各個(gè)信號會占用一定的帶寬。為了減小帶寬的占用,引入了事件觸發(fā)幀的概念。事件觸發(fā)幀的典型應(yīng)用就是輪詢四個(gè)車門的開關(guān)情況。與其利用無條件幀每個(gè)車門輪詢一遍,不如同時(shí)對四個(gè)車門進(jìn)行詢問,如果其中一個(gè)車門打開了(事件發(fā)生),該車門要對詢問作應(yīng)答,即事件觸發(fā)的含義。這樣做可以減小帶寬,但同時(shí)會導(dǎo)致兩種現(xiàn)象,其一就是沒有車門被打開,即無節(jié)點(diǎn)應(yīng)答——事件觸發(fā)幀允許一幀中只有幀頭無應(yīng)答;另外一種情況就是沖突,即同時(shí)有大于等于兩個(gè)車門被打開,對該問題同時(shí)作答——事件觸發(fā)幀允許兩個(gè)以上的節(jié)點(diǎn)對幀頭作應(yīng)答而不視為錯誤。當(dāng)發(fā)生沖突時(shí),主機(jī)節(jié)點(diǎn)需要重新作輪詢,這樣會增加一響應(yīng)時(shí)間,但由于事件觸發(fā)幀本身就用來處理低概率事件,總的來說還是節(jié)省了帶寬。原先用作輪詢的無條件幀,稱為與該事件觸發(fā)幀關(guān)聯(lián)的無條件幀,即事件觸發(fā)幀的應(yīng)答部分是與其關(guān)聯(lián)的無條件幀所提供的應(yīng)答。當(dāng)發(fā)生沖突時(shí),需要立刻中斷當(dāng)前的進(jìn)度表(參照 3.3 節(jié)),啟動沖突解決進(jìn)度表(CollisionResolving Schedule),重新調(diào)用這些關(guān)聯(lián)的無條件幀。其中,沖突解決進(jìn)度表要求包含所有的關(guān)聯(lián)的無條件幀。圖 3.11 示例描述了事件觸發(fā)幀的傳輸狀況。事件觸發(fā)幀的幀 ID 為 0x10,與其關(guān)聯(lián)的兩個(gè)無條件幀的幀 ID 分別是 0x11 和 0x12,這些幀 ID 的值只是為了舉例說明,協(xié)議并未強(qiáng)制規(guī)定。
與事件觸發(fā)幀關(guān)聯(lián)的多個(gè)無條件幀需要滿足以下 5 個(gè)條件:
(1) 數(shù)據(jù)段包含的數(shù)據(jù)字節(jié)數(shù)等長;
(2) 使用相同的校驗(yàn)和類型;
(3) 數(shù)據(jù)段的第一個(gè)字節(jié)為該無條件幀的受保護(hù) ID,這樣才能夠知道應(yīng)答是哪個(gè)關(guān)聯(lián)的無條件幀發(fā)送出來的;
(4) 由不同的從機(jī)節(jié)點(diǎn)發(fā)布;
(5) 不能與事件觸發(fā)幀處于同一個(gè)進(jìn)度表(參照 3.3 節(jié))中。
5.3 偶發(fā)幀(Sporadic Frame)
偶發(fā)幀是主機(jī)節(jié)點(diǎn)在同一幀時(shí)隙中當(dāng)自身信號發(fā)生變化時(shí)向總線啟動發(fā)送的幀。當(dāng)存在多個(gè)關(guān)
聯(lián)的應(yīng)答信號變化時(shí),通過事先設(shè)定的優(yōu)先級來仲裁。與事件觸發(fā)幀一樣,偶發(fā)幀的應(yīng)答也關(guān)聯(lián)了一組無條件幀。規(guī)定偶發(fā)幀只能由主機(jī)節(jié)點(diǎn)作為發(fā)布節(jié)點(diǎn)。偶發(fā)幀的傳輸可能出現(xiàn)三種狀況: 1)當(dāng)關(guān)聯(lián)的無條件幀沒有信號發(fā)生變化時(shí),該時(shí)隙(參照 3.3 節(jié))保持沉默,如圖3.12 第一個(gè)幀時(shí)隙所示,主機(jī)節(jié)點(diǎn)連幀頭都不需要發(fā)送; 2)當(dāng)其中一個(gè)關(guān)聯(lián)的無條件幀包含的信號發(fā)生了變化,
則發(fā)送該關(guān)聯(lián)的無條件幀的應(yīng)答部分; 3)如果有兩個(gè)或兩個(gè)關(guān)聯(lián)的無條件幀包含的信號發(fā)生了變化,則按照事先規(guī)定好的優(yōu)先級,優(yōu)先級較高的關(guān)聯(lián)的無條件幀獲得發(fā)送權(quán),優(yōu)先級較低的要等到下一個(gè)偶發(fā)幀的幀頭到來時(shí)才能發(fā)送應(yīng)答。由于主機(jī)節(jié)點(diǎn)是唯一的發(fā)布節(jié)點(diǎn),所以主機(jī)節(jié)點(diǎn)事先就知道各個(gè)關(guān)聯(lián)信號的優(yōu)先級別,這樣在傳輸時(shí)就不會產(chǎn)生沖突。
引入偶發(fā)幀的目的在于為進(jìn)度表增加一些動態(tài)特性——當(dāng)主機(jī)節(jié)點(diǎn)的信號發(fā)生變化時(shí)才有通信發(fā)生。事件觸發(fā)幀和偶發(fā)幀反映了幀在不同時(shí)機(jī)(信號變化或未發(fā)生變化)的傳輸狀況,引入它們的目的是為了增加通信的靈活性
5.4 診斷幀(Diagnostic Frame)
診斷幀包括主機(jī)請求幀和從機(jī)應(yīng)答幀,主要用于配置、識別和診斷用。主機(jī)請求幀(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)和。
總結(jié)