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