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