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