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