LIN總線(xiàn)作為一種輔助的總線(xiàn)網(wǎng)絡(luò)也是存在同步機(jī)制的,但是LIN在作為接收節(jié)點(diǎn)接收數(shù)據(jù)時(shí)是有自動(dòng)修正總線(xiàn)上通訊的波特率偏差的能力的。那這是怎么做到的呢?本文將與大家深入探討。
LIN(Local Interconnect Network)是一種低成本的串行通訊網(wǎng)絡(luò),用于實(shí)現(xiàn)汽車(chē)中的分布式電子系統(tǒng)控制。LIN的目標(biāo)是為現(xiàn)有汽車(chē)網(wǎng)絡(luò)(例如CAN總線(xiàn))提供輔助功能,因此LIN總線(xiàn)是一種輔助的總線(xiàn)網(wǎng)絡(luò)。在不需要CAN總線(xiàn)的帶寬和多功能的場(chǎng)合,比如智能傳感器和制動(dòng)裝置之間的通訊使用LIN總線(xiàn)可大大節(jié)省成本。LIN 通訊是基于SCI(UART)數(shù)據(jù)格式,采用單主控制器/多從設(shè)備的模式。僅使用一根12V信號(hào)總線(xiàn)和一個(gè)無(wú)固定時(shí)間基準(zhǔn)的節(jié)點(diǎn)同步時(shí)鐘線(xiàn)。
LIN幀結(jié)構(gòu)
LIN幀(frame)包含幀頭(Header)和應(yīng)答(Response)兩部分。幀頭包括同步間隔段、同步段以及PID(Protected Identifier,受保護(hù)ID)段,應(yīng)答包括數(shù)據(jù)段和校驗(yàn)和段,如圖1所示,其中值“0”為顯性電平(Dominant),值“1”為隱性電平(Recessive)。
圖1 LIN幀結(jié)構(gòu)
UART的基本時(shí)序
再介紹LIN同步機(jī)制之前,我們需要介紹一下UART的基本時(shí)序,了解一下底層信號(hào)是怎么傳送的。
以波特率9600為例,可以理解為將1s分解為9600等份,對(duì)于發(fā)送端來(lái)說(shuō),每bit電平的維持時(shí)間是1/9600s,對(duì)于接收端來(lái)說(shuō),在1/9600s內(nèi)要完成數(shù)據(jù)的采樣。因此對(duì)于不同時(shí)間源的設(shè)備,如何實(shí)現(xiàn)這個(gè)發(fā)送“節(jié)拍”以及設(shè)置接收采樣頻率非常重要。
圖2 波特率示意圖
UART的基本時(shí)序:
發(fā)送端:
圖3 發(fā)送端
接收端:
圖4 接收端
UART的每一幀數(shù)據(jù)一般有10位,分別為初始位、8位數(shù)據(jù)和結(jié)束位。對(duì)于發(fā)送端,將待發(fā)送的數(shù)據(jù)存入發(fā)送寄存器,產(chǎn)生起始位,即將電平拉低,隨后每1/9600s將寄存器中的數(shù)據(jù)一位一位的發(fā)送出去。當(dāng)數(shù)據(jù)發(fā)送完畢后,將電平拉高等待下一次的發(fā)送。對(duì)于接收端來(lái)說(shuō)首先要檢測(cè)是否有數(shù)據(jù)來(lái),它采用下降沿檢測(cè)的方式來(lái)檢測(cè)起始位。對(duì)于數(shù)據(jù)位的采樣,選取數(shù)據(jù)位的中點(diǎn)位置的電平作為采樣數(shù)據(jù),因?yàn)橹悬c(diǎn)位置的電平較為穩(wěn)定。假設(shè)采樣間隔為N,那么當(dāng)采樣8N后,就可以停止采樣了。
LIN同步機(jī)制
LIN總線(xiàn)協(xié)議規(guī)定,LIN網(wǎng)絡(luò)主機(jī)節(jié)點(diǎn)必須采用較高精度時(shí)鐘,作為L(zhǎng)IN網(wǎng)絡(luò)時(shí)間基準(zhǔn),保證位速率的準(zhǔn)確性,而從機(jī)節(jié)點(diǎn)可以使用較低精度時(shí)鐘,所以主從節(jié)點(diǎn)的時(shí)鐘就會(huì)有頻率偏差,需要進(jìn)行調(diào)整同步,否則難以保證數(shù)據(jù)的正確收發(fā)。若不進(jìn)行LIN同步會(huì)有多大的影響呢?我們可通過(guò)控制器對(duì)同步間隔段識(shí)別的閾值來(lái)量化。
圖5 同步間隔段
同步間隔段由同步間隔(Break)和同步間隔段間隔符(Break Delimiter)構(gòu)成,如圖5所示。同步間隔是至少持續(xù)13位(以主機(jī)節(jié)點(diǎn)的位速率為準(zhǔn))的顯性電平,由于幀中的所有間隔或總線(xiàn)空閑時(shí)都應(yīng)保持隱性電平,并且?guī)械娜魏纹渌侄味疾粫?huì)發(fā)出大于9位的顯性電平(LIN報(bào)文以字節(jié)域格式通訊),因此13位的同步間隔可以標(biāo)志一個(gè)幀的開(kāi)始,而能否識(shí)別這13位的同步間隔段就顯得尤為重要,這完全依賴(lài)于節(jié)點(diǎn)的一個(gè)參數(shù)-識(shí)別閾值,其計(jì)算方法如下: