lin通讯从节点同步间隔场_LIN模块介绍
概述,協議規范及模塊實現
一、概述
1、如下圖為一個LIN網絡,包含了一個Master節點,兩個Slave節點:
LIN網絡
在LIN總線通訊中,Master task決定了在LIN總線上傳送的是哪一幀,Slave task提供每一幀所攜帶的數據。
2、如下圖為一個LIN節點的層次結構圖:
LIN1.3與LIN2.1的區別在于,LIN1.3沒有TL層,Signal interaction放在Protocol層中,沒有單獨的TP層。
3、LIN總線特點:
串行通信:線間干擾小,節省線束,傳輸距離長;
單線傳輸:增強的ISO9141 (ISO 15765-1), 總線電壓基于VBAT;
最高速率20Kbit/s:滿足車身上大部分的應用需求;
單主多從結構:無需仲裁;
基于通用UART/SCI的低成本接口硬件:幾乎所有MCU有具備LIN總線的硬件基礎;
從節點無須晶振或陶瓷震蕩器就可以實現同步:大幅度降低成本;
一條總線最多可連接16個節點:由總線電氣特性決定;
支持診斷功能:支持UDS服務;
4、LIN2.1節點模型:
LIN1.3節點模型:
LIN2.1與LIN1.3節點模型的差別在于LIN1.3沒有Transport layer,所以也就沒有流控、傳輸時間控制的功能,LIN1.3協議中沒有對診斷及節點配置進行規范,所以在LIN1.3中完成相應的功能都放在自定義診斷中完成。
5、LIN網絡拓撲結構:
1)單主任務,多從任務;
2)主節點包含主任務和從任務;
3)從節點只包含從任務;
4)主任務決定總線上的報文,從 任務發送數據;
6、LIN幀:
通信原理:主任務發送報頭,從任務用響應來補充報頭形成完整的報文。
報文傳輸:報文的內容由ID來定義。
廣播:所有節點都能夠接受總線上的幀。
7、調度表
1)負責調度網絡各報文發送的順序;
2)為每幀報文分配發送時隙(slot);
3)發送時隙:報文可以被發送的時間;
4)不同報文的發送時隙可能不同;
5)調度表在網絡系統設計階段確定;
6)調度表使得LIN通信具有可預測性;
8、切換調度表:
主任務可以擁有多個調度表,并在不同的調度表之間切換,該處理方式增加通信的靈活性。
二、協議規范
(1)字節間隔位于每個字節之間;
(2)響應間隔位于報頭與響應之間;
(3)留給MCU足夠的處理時間;
(4)幀長度可能增長;
1、字節場
1)基于SCI的通信格式;
2)發送一個字節需要10個位時間(TBIT);
2、間隔場
1)表示一幀報文的起始,由主節點發出;
2)間隔信號至少由13個顯性位組成;
3)隔界定符至少由1個隱形位組成;
4)間隔場是唯一一個不符合字節場格式的場;
5)從節點需要檢測到至少連續11個顯性位才認為是間隔信號;
3、同步場
1)確保所有從節點使用與節點相同的波特率發送和接收數據;
2)一個字節,結構固定:0X55;
4、標識符場
1)ID的范圍從0到63(Ox3f);
2)奇偶校驗符(Parity)P0,P1;
5、數據場
1)數據場長度1到8個字節;
2)低字節先發,低位先發;
3)如果某信號長度超過1個字節采用低位在前的方式發送(小端);
6、校驗和場
用于校驗接收的數據是否正確
1)經典校驗(Classic Checksum)僅校驗數據場(LIN1.3)
2)增強校驗(Enhance Checksum)校驗標識符場與數據場內容(LIN2.0、LIN2.1)
標識符為0x3C和0x3D的幀只能使用經典校驗
計算方法:反轉8位求和(inverted eight bit sum)
例:Data=0x4A、0x55、0x93、0xe5
7、幀長度
最小幀長度
THEADER_NOMINAL=34*TBIT
TRESPONSE_NOMINAL=10*(NDATA+1)*TBIT
TFRAME_NOMINAL=THEADER_NOMINAL+TRESPONSE_NOMINAL
最大幀長度
THEADER_MAX=1.4*THEADER_NOMINAL
TRESPONSE_MAX=1.4*TRESPONSE_NOMINAL
TFRAME MAX=THEADER MAX+TRESPONSE MAX
8、幀類型
1)無條件幀
使用頻度最高的幀類型,無任何發送條件;
標識符(ID)為0到59(0x3B);
主任務發出報頭,一個任務響應,一個或多個任務接收如下圖:
幀?ID = 0x30應答部分的發布節點為從機節點1,收聽節點為主機節點。典型應用如從機節點1向主機節點報告自身某信號的狀態。
幀?ID = 0x31應答部分的發布節點為主機節點,收聽節點為從機節點1和從機節點2。典型應用如主機節點向從機節點發布信息。
幀?ID = 0x32應答部分的發布節點為從機節點2,收聽節點為從機節點1。典型應用如從機節點之間彼此通信。
2)事件觸發幀
引入事件觸發幀的目的是節省帶寬。
BCM(Master)需要獲取4個車門的狀態,該如何實現?
第一種方式:
每次向四個車門請求狀態,浪費帶寬,因為車門狀態不是經常發生。
第二種方法:
將請求四個車門狀態的幀合并為一個事件觸發幀,Master不需要每次發送四個幀請求車門的狀態,只需要發送一個事件觸發幀即可,哪個車門狀態發生變化,對應的車門將響應該事件觸發幀。
事件觸發幀的響應會出現如下三種情況:
第一種:沒有車門狀態變化。
第二種:一個車門狀態發生變化:
第三種:多個車門狀態發生變化,此時將出現沖突,沖突處理時,Master需要像第一種處理方式一樣,重新發送四幀分別請求單個車門狀態。LIN1.3與LIN2.0、LIN2.1處理方式有所區別,區別在于LIN1.3不切換調度表,占用事件觸發幀的時隙發送,LIN2.0、LIN2.1將切換沖突調度表處理,如下圖:
3)零星幀(偶發幀(Sporadic Frame))
引入零星幀的目的也是為了節省帶寬,如:BCM(Master)需要發送對4個車窗的控制指令,但是,兩個車窗的控制命令很少被同時執行,同樣大量的帶寬被浪費。
具體方案如下:
4)診斷幀
診斷幀用來傳輸診斷或配置信息,一般包含8個字節。
標識符:
60(0x3C):主請求幀
61(0x3D):從響應幀
傳輸方式:
5)保留幀
標識符:62(0x3e), 63(0x3f)
在LIN 2.1中未對保留幀進行定義, 留給用戶自定義或將來的版本升級。
9、調度表
10、偏移
偏移(jitter)是指一幀報文實際開始發送的時刻與幀時隙起點的時間差(該值在LDF文件中定義)。
TFrame_Slot> jitter + TFrame_Maximum
11、網絡管理
12、睡眠(Go To Sleep)
睡眠指令只有主節點可以發送,從節點在接到睡眠指令之后,也可以選擇不進入睡眠狀態而繼續工作,這根據應用層協議而定。
13、喚醒(Wake Up)
在一個處于睡眠狀態的LIN網絡中,任何一個節點都可以發送喚醒信號。
發送節點發送的喚醒信號:
接收節點檢測的喚醒信號:
14、主任務狀態機模型
15、從任務狀態機模型
總結
以上是生活随笔為你收集整理的lin通讯从节点同步间隔场_LIN模块介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手把手教弟弟写了个扫雷demo,弟弟竟拿
- 下一篇: Qt Quick实现的涂鸦程序