簡介
本地互聯(lián)網(wǎng)絡(luò) LIN(Local Interconnect Network)總線協(xié)議,是基于UART/SCI(Universal Asynchronous Receiver-Transmitter/SerialCommunication Interface通用異步收發(fā)器/串行通信接口)的低成本串行通信協(xié)議。在車載電子系統(tǒng)中,相對于CAN總線而言,LIN總線協(xié)議較為簡單,對單片機(jī)的要求也并不高,基本的串口就可以實(shí)現(xiàn),成本較低,可作為CAN總線的輔助總線。LIN總線廣泛應(yīng)用于車門、車窗、車燈以及中控鎖等車身控制領(lǐng)域。
表x LIN總線協(xié)議大事記
最新的標(biāo)準(zhǔn):
- ISO 17897-2016/2019
- SAE J2602-1_202110: LIN Network for Vehicle Applications - SAE International
- ISO 17987-1,Part1: General information and use case definition
- ISO 17987-2,Part2: Transport protocol and network layer services
- ISO 17987-3,Part3: Protocol specification
- ISO 17987-4,Part4: Electrical Physical Layer (EPL) specification 12V/24V
- ISO 17987-5,Part5: Application Programmers Interface (API)
- ISO 17987-6,Part6: Protocol conformance test specification
- ISO 17987-7,Part7: Electrical Physical Layer (EPL) conformance test specification
- ISO 17987-8,Part 8: Electrical physical layer (EPL) specification: LIN over DC powerline (DC-LIN)
LIN總線有如下特點(diǎn):
- 單主機(jī)同多從機(jī)通信,無需仲裁機(jī)制,所有通信過程由主機(jī)主導(dǎo);
- 低成本,基于通用UART接口,幾乎所有的微控制器都具備LIN必需的硬件;
- 單線信號(hào)傳輸,通信協(xié)議簡單;
- LIN具有可預(yù)測的電磁兼容性能,為了限制EMC的強(qiáng)度,LIN協(xié)議規(guī)定了最大傳輸速率為20kbps;
- LIN總線提供信號(hào)的配置、處理、識(shí)別和診斷功能。
LIN總線在汽車中一般不獨(dú)立存在,通常與上層CAN網(wǎng)絡(luò)相連,形成CAN-LIN
網(wǎng)關(guān)節(jié)點(diǎn),通常汽車電子中整車廠會(huì)規(guī)定該“網(wǎng)關(guān)節(jié)點(diǎn)”的控制器歸屬。如圖x所示。
圖x CAN-LIN節(jié)點(diǎn)在CAN網(wǎng)絡(luò)中的角色
LIN網(wǎng)絡(luò)內(nèi)部包括LIN Master Node(主機(jī)節(jié)點(diǎn))和LIN Slave Node(從機(jī)節(jié)點(diǎn)),其中,主機(jī)節(jié)點(diǎn)可以運(yùn)行一個(gè)主機(jī)任務(wù)和一個(gè)從機(jī)任務(wù),而從機(jī)節(jié)點(diǎn)上僅能運(yùn)行一個(gè)從機(jī)任務(wù)。整個(gè)網(wǎng)絡(luò)中,必須包含一個(gè)主機(jī)節(jié)點(diǎn),和最多15個(gè)從機(jī)節(jié)點(diǎn)。如圖x所示。
圖x LIN網(wǎng)絡(luò)中的主機(jī)和從機(jī)
注意:LIN協(xié)議對任務(wù)進(jìn)行建模,約定主機(jī)任務(wù)僅為發(fā)送幀首,從機(jī)節(jié)點(diǎn)處理應(yīng)答數(shù)據(jù)(發(fā)送或接收)。所以,從機(jī)節(jié)點(diǎn)僅實(shí)現(xiàn)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的操作,故僅運(yùn)行從機(jī)任務(wù);主機(jī)節(jié)點(diǎn)的主機(jī)任務(wù)發(fā)送幀首后,還可交由主機(jī)節(jié)點(diǎn)的從機(jī)任務(wù)發(fā)送或者接收應(yīng)答任務(wù)。其中,主機(jī)任務(wù)發(fā)送的幀ID,就包含了數(shù)據(jù)應(yīng)由哪個(gè)節(jié)點(diǎn)發(fā)送上線、哪個(gè)節(jié)點(diǎn)捕獲數(shù)據(jù)的約定。由此,還可以設(shè)想一種只有主機(jī)任務(wù)的主機(jī)節(jié)點(diǎn),但此時(shí)意義不大,主機(jī)任務(wù)協(xié)調(diào)網(wǎng)絡(luò)中的各節(jié)點(diǎn),最終都是為了將本機(jī)的數(shù)據(jù)部署至網(wǎng)絡(luò)節(jié)點(diǎn)或從網(wǎng)絡(luò)節(jié)點(diǎn)中取數(shù),如果將主機(jī)節(jié)點(diǎn)的主機(jī)任務(wù)同自己的從機(jī)任務(wù)分類,就需要這兩個(gè)任務(wù)做好同步,如此,還不如放在同一個(gè)節(jié)點(diǎn)上方便管理。
LIN信號(hào)的物理層
LIN總線僅使用一根信號(hào)線,信號(hào)線上傳輸邏輯電平信號(hào),其中“0”為顯性電平、“1”為隱性電平(顯隱性與CAN總線是相同的)。傳輸信號(hào)在總線上實(shí)行“線-與”:
- 當(dāng)總線有至少一個(gè)節(jié)點(diǎn)發(fā)送顯性電平時(shí),總線呈現(xiàn)顯性電平;
- 所有節(jié)點(diǎn)均發(fā)送隱性電平或者不發(fā)送信息時(shí),總線呈隱性電平,即顯性電平起著主導(dǎo)作用。
實(shí)際上,在使用LIN總線時(shí),相對于微控制器上集成的LIN協(xié)議控制器(LIN通信引擎外設(shè),例如LINFlexD),還需要搭配一個(gè)LIN收發(fā)器芯片,將LIN協(xié)議控制器的Tx和Rx信號(hào),同LIN總線上的顯性信號(hào)和隱形信號(hào)進(jìn)行轉(zhuǎn)換。如圖x所示。
圖x LIN協(xié)議控制器和和LIN收發(fā)器
LIN協(xié)議控制器
協(xié)議控制器主體是一個(gè)基于UART/SCI的通信控制器,以半雙工方式工作。協(xié)議控制器既可以使用專用模塊實(shí)現(xiàn),也可以用“UART/SCI+定時(shí)器”實(shí)現(xiàn):
- 發(fā)送數(shù)據(jù)時(shí),LIN協(xié)議控制器把數(shù)據(jù)以UART的數(shù)據(jù)格式(8數(shù)據(jù)位,1停止位,無校驗(yàn)位)送往LIN總線收發(fā)器;
- 接收數(shù)據(jù)時(shí),LIN總線收發(fā)器捕獲來自總線的串行信號(hào)流(顯性隱性數(shù)據(jù)),轉(zhuǎn)換成UART的數(shù)據(jù)格式,送回LIN協(xié)議控制器。
LIN協(xié)議控制器需要產(chǎn)生和識(shí)別幀的同步間隔段
。同步間隔段包含一段長度至少為13位的低電平,再加上一段長度至少為1位的高電平的同步間隔隔離段
。產(chǎn)生和識(shí)別同步間隔段的機(jī)制,雖然增加了硬件設(shè)計(jì)的復(fù)雜度,但是從接收方的角度看,這樣做能把同步間隔段與普通的數(shù)據(jù)字節(jié)區(qū)別開,確保了同步信息的準(zhǔn)確性。
協(xié)議控制器需要能夠發(fā)送和捕獲喚醒信號(hào):
- 協(xié)議控制器要能執(zhí)行本地喚醒(Local Wakeup)。當(dāng)需要喚醒總線時(shí),協(xié)議控制器通過總線收發(fā)器向 LIN 總線送出喚醒信號(hào)。
- 協(xié)議控制器要能識(shí)別總線喚醒(Bus Wakeup)。當(dāng)收到來自 LIN 總線的喚醒信號(hào)時(shí),協(xié)議控制器能夠正確動(dòng)作,進(jìn)入規(guī)定的通信狀態(tài)。
LIN總線收發(fā)器
總線收發(fā)器的主體是一個(gè)雙向工作的電平轉(zhuǎn)換器,完成協(xié)議控制器的高-低電平與LIN總線的隱性-顯性電平之間的轉(zhuǎn)換。
LIN規(guī)范規(guī)定:LIN總線的電平,以總線收發(fā)器的供電作為參考電平。為了克服電源波動(dòng)和參考點(diǎn)漂移的影響,LIN規(guī)范要求總線收發(fā)器要能承受±11.5%的電源波動(dòng)和參考點(diǎn)電平波動(dòng),并且能承受電源和參考點(diǎn)之間8%的電位差波動(dòng)。收發(fā)雙方的電平鑒別門限也設(shè)置了較大的冗余度。
總線收發(fā)器還包括一些附加的功能,例如總線阻抗匹配、壓擺率(Slew-rate)控制等。
此外,LIN規(guī)范要求總線收發(fā)器具備這樣一種特性:本地節(jié)點(diǎn)掉電或工作異常時(shí),不能影響總線上其他節(jié)點(diǎn)工作。
一個(gè)典型的總線收發(fā)器應(yīng)用電路,如圖x所示。
圖x EVB-YTM32B1M-Q144開發(fā)板上的LIN收發(fā)器電路
LIN通信協(xié)議
LIN的主機(jī)和從機(jī)
LIN報(bào)文幀由幀頭(Hearder)與應(yīng)答(Response)兩部分組成。如下圖所示,傳輸過程中:
- 幀頭總是由主機(jī)任務(wù)發(fā)出。幀頭包括:一個(gè)幀間隔段、一個(gè)同步段,以及一個(gè)幀標(biāo)識(shí)號(hào)
- 從機(jī)任務(wù)接收幀頭,作出解析,決定:發(fā)送應(yīng)答數(shù)據(jù)?接收來自主機(jī)或別的從機(jī)的應(yīng)答數(shù)據(jù)?不回復(fù)?
圖x LIN主機(jī)和從機(jī)的交互
注意,圖x中描述的是主機(jī)任務(wù)和從機(jī)任務(wù),而不是節(jié)點(diǎn)。通常情況下,從機(jī)節(jié)點(diǎn)中僅執(zhí)行從機(jī)任務(wù),根據(jù)主機(jī)任務(wù)發(fā)出的幀頭做出響應(yīng),發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。但主機(jī)節(jié)點(diǎn)是包含主機(jī)任務(wù)和從機(jī)任務(wù),主機(jī)節(jié)點(diǎn)把發(fā)送幀頭的工作歸到主機(jī)任務(wù)上,把數(shù)據(jù)通信的工作歸到從機(jī)任務(wù)上。即,當(dāng)主機(jī)節(jié)點(diǎn)向從機(jī)節(jié)點(diǎn)送數(shù)時(shí),先由主機(jī)節(jié)點(diǎn)的主機(jī)任務(wù)發(fā)出幀頭,再由主機(jī)節(jié)點(diǎn)的從機(jī)任務(wù)送出數(shù)據(jù);當(dāng)主機(jī)節(jié)點(diǎn)從從機(jī)節(jié)點(diǎn)要數(shù)時(shí),先由主機(jī)節(jié)點(diǎn)的主機(jī)任務(wù)發(fā)出幀頭,再由主機(jī)節(jié)點(diǎn)的從機(jī)任務(wù)從總線上捕獲數(shù)據(jù)。由此,也可以將主機(jī)任務(wù)別稱為“幀頭任務(wù)”,對應(yīng)從機(jī)任務(wù)為“數(shù)據(jù)任務(wù)”。
LIN報(bào)文幀結(jié)構(gòu)
LIN報(bào)文分為幀頭和應(yīng)答兩個(gè)階段,其中,由主機(jī)發(fā)送的幀頭內(nèi)部包含:同步間隔段、同步段和受保護(hù)ID段;主機(jī)發(fā)送或者從機(jī)發(fā)送的應(yīng)答段內(nèi)部包含:最多8個(gè)字節(jié)的數(shù)據(jù)段和校驗(yàn)和。
圖x LIN通信幀結(jié)構(gòu)
還需要注意的是,幀頭和應(yīng)答中間是允許有一定的時(shí)間間隔的,用于給從機(jī)任務(wù)捕獲和解析幀頭,并準(zhǔn)備應(yīng)答數(shù)據(jù)留足的時(shí)間。如圖x所示。
圖x LIN通信幀的響應(yīng)延遲
在LINFlexD引擎中,還可以由軟件配置從幀頭結(jié)束到應(yīng)答開始中間的間隔時(shí)間容限,判定超時(shí)事件。
同步間隔段(Break field)
注意 圖x LIN通信幀結(jié)構(gòu) 中,幀的所有間隙均為隱性電平“1”,總線空閑時(shí),也是保持隱性電平“1”的狀態(tài),并且LIN通信幀中,除了同步間隔段外,任何其它字段都不會(huì)出現(xiàn)多于9位的顯性電平。同步間隔段由至少13位(通常選擇13位或14位)顯性電平組成,用于將不同的通信幀相互分隔開來。同步間隔段就用來表示一幀的開始。另外,同步間隔段的間隔符(Break Delimiter) 至少為1位隱性電平。如圖x所示。
圖x 同步間隔段與同步間隔段隔離符
同步段(Sync field)
在介紹同步段之前,先介紹一下字節(jié)段結(jié)構(gòu)(Byte Field Structure)的概念,字節(jié)段結(jié)構(gòu)包括:1位起始位(Start Bit,顯性)+ 8位數(shù)據(jù)位 + 1位停止位(Stop Bit,隱性),這是一種標(biāo)準(zhǔn)UART數(shù)據(jù)傳輸格式。在 LIN 的一幀當(dāng)中,除了同步間隔段,后面的各段都是通過字節(jié)域的格式傳輸?shù)?。LIN 幀中的數(shù)據(jù)傳輸都是先發(fā)送LSB(Least Significant Bit,最低有效位),最后發(fā)送 MSB(Most Significant Bit,最高有效位)。LIN總線使用字節(jié)0x55(01010101b)進(jìn)行同步,在從機(jī)節(jié)點(diǎn)上可以采用非高精度時(shí)鐘,如果存在偏差,可以通過同步段來調(diào)整。同步段中的就是一個(gè)值為0x55
的字節(jié)。
圖x LIN通信幀中的同步段
受保護(hù)的幀ID(Protected Identifier field)
受保護(hù)的幀ID中包含兩部分:6個(gè)比特的ID編號(hào)和2比特的奇偶校驗(yàn)位。
圖x LIN通信幀中的PID段
其中,幀ID的取值范圍為0x00~0x3F,共64個(gè),幀ID標(biāo)識(shí)了幀的類別,從機(jī)任務(wù)會(huì)根據(jù)幀頭ID作出反應(yīng)(接收/發(fā)送/忽略應(yīng)答)。其中,校驗(yàn)位P0和P1的計(jì)算方式如下:
P0 = ID0 xor ID1 xor ID2 xor ID4
P1 = not ( ID1 xor ID3 xor ID4 xor ID5 )
特別注意,LIN總線的ID同CAN總線相似,標(biāo)識(shí)的是消息的類型,并不是從機(jī)節(jié)點(diǎn)的地址(例如I2C總線)。LIN總線根據(jù)幀ID的不同,將報(bào)文分為信號(hào)攜帶幀
、診斷幀
、保留幀
。此為應(yīng)用層的約定,此處暫不展開。
應(yīng)答數(shù)據(jù)段(Data field)
數(shù)據(jù)段包含1-8個(gè)字節(jié)。LIN2.x規(guī)定,可傳輸?shù)腖IN字節(jié)數(shù)為2,4,8,并不是1-8內(nèi)任意一個(gè)數(shù)字。一般而言,車內(nèi)會(huì)選擇統(tǒng)一字節(jié)數(shù),最常用的是每幀傳遞8個(gè)字節(jié)。
圖x LIN通信幀中的數(shù)據(jù)段
與CAN總線(包括DLC字段)不同,LIN協(xié)議中并沒有規(guī)定數(shù)據(jù)長度的信息,數(shù)據(jù)內(nèi)容和長度均由應(yīng)用系統(tǒng)的設(shè)計(jì)者根據(jù)幀ID提前設(shè)計(jì)。總線上的數(shù)據(jù)以廣播形式發(fā)出,任何節(jié)點(diǎn)都可收到,但并非對每個(gè)節(jié)點(diǎn)有用。具體到發(fā)布與接聽是由哪個(gè)節(jié)點(diǎn)完成,這取決于應(yīng)用層的配置。通常情況下,幀的應(yīng)答,總線上只存在一個(gè)發(fā)布節(jié)點(diǎn),否則會(huì)出現(xiàn)錯(cuò)誤。(事件觸發(fā)幀例外,它可能出現(xiàn)0,1和多個(gè)發(fā)布節(jié)點(diǎn)。)
校驗(yàn)和段(Checksum field)
效驗(yàn)和段是為了對幀傳輸?shù)膬?nèi)容進(jìn)行效驗(yàn)。校驗(yàn)和段的1個(gè)字節(jié)的值,是將本幀數(shù)據(jù)段和PID段的值按照8位求和,再取反得到的。
效驗(yàn)分為標(biāo)準(zhǔn)型效驗(yàn)與增強(qiáng)型效驗(yàn):
- 經(jīng)典款校驗(yàn)和(Classical Checksum)僅計(jì)算數(shù)據(jù)段的部分,適用于LIN v1.3及更早期的版本。
- 增強(qiáng)型校驗(yàn)和(Enhanced Checksum)計(jì)算數(shù)據(jù)段和PID部分,適用于LIN v2.0及以后的版本。
采用標(biāo)準(zhǔn)型還是增強(qiáng)型是由主機(jī)節(jié)點(diǎn)管理,發(fā)布節(jié)點(diǎn)和收聽節(jié)點(diǎn)根據(jù)幀ID來判斷采用哪種效驗(yàn)和。
在YTM32B1ME微控制器的手冊中描述LINFlexD發(fā)送幀頭時(shí),可以在寄存器LINFlexD_BIDR[CCS]
中選擇,將發(fā)送或者檢測增強(qiáng)型校驗(yàn)和還是經(jīng)典款校驗(yàn)和。
LIN總線的波形
圖x LIN總線上的波形
上圖展示了LIN總線的通訊方式,可以看出,無論什么時(shí)候幀頭都是由主機(jī)節(jié)點(diǎn)發(fā)布,當(dāng)主機(jī)節(jié)點(diǎn)要發(fā)布數(shù)據(jù)時(shí),整個(gè)幀全部由主機(jī)節(jié)點(diǎn)發(fā)送。當(dāng)從機(jī)節(jié)點(diǎn)要發(fā)布數(shù)據(jù)時(shí),幀頭部分由主機(jī)節(jié)點(diǎn)發(fā)布,應(yīng)答部分由從機(jī)節(jié)點(diǎn)發(fā)布,這樣,其余節(jié)點(diǎn)都能收到完整的報(bào)文。所以,LIN總線的通訊都是由主機(jī)節(jié)點(diǎn)發(fā)起,只要合理的規(guī)定好每個(gè)節(jié)點(diǎn)的配置,這樣就不會(huì)存在總線沖突的情況(事件觸發(fā)幀沖突時(shí)采用沖突解決進(jìn)度表)。
評論
查看更多