LIN協(xié)議是新出現(xiàn)的一種新型低成本串行通信總線,其全稱是Local Interconnect Network,即局部互聯(lián)網(wǎng)絡(luò)。它最開始出現(xiàn)于汽車行業(yè),是為解決汽車智能化和網(wǎng)絡(luò)化的發(fā)展要求和降低汽車制造成本的矛盾而提出來(lái)的一種串行總線協(xié)議,主要用于車門、車燈等需要簡(jiǎn)單控制但又要求智能控制的場(chǎng)合。它的主要特點(diǎn)是:采用單個(gè)主控制器/多從設(shè)備通信模式;基于普通UART/SCI接口硬件實(shí)現(xiàn),協(xié)議簡(jiǎn)單;網(wǎng)絡(luò)傳輸速率不高,最高可達(dá)20kb/s。由于LIN協(xié)議的突出特點(diǎn)是協(xié)議對(duì)硬件的依賴程度低,可以基于普通單片機(jī)的通用串口等硬件資源以軟件方式實(shí)現(xiàn),成本低廉,因此可廣泛應(yīng)用于汽車行業(yè)以外的其他領(lǐng)域,如智能家庭網(wǎng)絡(luò)內(nèi)部的數(shù)據(jù)傳輸、節(jié)點(diǎn)控制等場(chǎng)合。
本文依據(jù)對(duì)LIN協(xié)議的分析,對(duì)其協(xié)議在普通單片機(jī)上的具體實(shí)現(xiàn),即如何利用單片機(jī)有限的硬件資源實(shí)現(xiàn)LIN的主節(jié)點(diǎn)、從節(jié)點(diǎn),進(jìn)行可行性方案的研究、探討。
2 LIN協(xié)議的簡(jiǎn)介
LIN協(xié)議的最新版本是LIN Specification Package Revision 2.O,包括協(xié)議規(guī)范、節(jié)點(diǎn)診斷配置規(guī)范、物理層規(guī)范、API規(guī)范等幾個(gè)方面,從硬件配置到節(jié)點(diǎn)配置語(yǔ)言都作了詳細(xì)的規(guī)定。下面就其協(xié)議規(guī)范作一簡(jiǎn)要介紹和分析。
LIN的數(shù)據(jù)傳輸是采用報(bào)文幀的形式進(jìn)行的。一個(gè)完整的報(bào)文幀由1個(gè)主機(jī)節(jié)點(diǎn)發(fā)送的報(bào)文頭(header)和1個(gè)主機(jī)或從機(jī)節(jié)點(diǎn)發(fā)送的響應(yīng)(response)組成,如圖1所示。報(bào)文頭包括1個(gè)間隔場(chǎng)(break)、1個(gè)同步字節(jié)場(chǎng)(synch)和1個(gè)保護(hù)標(biāo)識(shí)符字節(jié)場(chǎng)PID(Protected IDentifier)。間隔場(chǎng)是由持續(xù)了至少13個(gè)位時(shí)的顯性電平和至少1個(gè)位時(shí)的隱性電平組成;由主機(jī)節(jié)點(diǎn)產(chǎn)生,標(biāo)志著一次數(shù)據(jù)通信過(guò)程報(bào)文幀的開始。同步字節(jié)場(chǎng)包含時(shí)鐘同步信息。同步字節(jié)場(chǎng)的格式是0x55,表現(xiàn)在8個(gè)位定時(shí)中有5個(gè)下降沿,即隱性跳變到顯性的邊沿。

下一步,所有的從機(jī)節(jié)點(diǎn)以計(jì)算得到的波特率來(lái)接收?qǐng)?bào)文頭的保護(hù)標(biāo)識(shí)符字節(jié)場(chǎng)。
保護(hù)標(biāo)識(shí)符字節(jié)場(chǎng)PID(Protected IDentifier)與標(biāo)準(zhǔn)的串行通信數(shù)據(jù)幀格式相同,由1位起始位和1位停止位及8位數(shù)據(jù)位組成,屬于數(shù)據(jù)場(chǎng),如圖2所示。
保護(hù)標(biāo)識(shí)符字節(jié)場(chǎng)由兩部分組成:標(biāo)識(shí)符和標(biāo)識(shí)符奇偶校驗(yàn)。ID0~I(xiàn)D5屬標(biāo)識(shí)符,確定了標(biāo)識(shí)符的內(nèi)容,可從0~63取值。其中,0~59(0x3b)用于信號(hào)傳送幀,60(0x3c)和61(0x3d)用于傳送診斷數(shù)據(jù),62(0x3e)保留用于用戶定義的擴(kuò)展,63(0x3f)保留用于將來(lái)協(xié)議升級(jí)。奇偶校驗(yàn)位P0和P1則是對(duì)標(biāo)識(shí)符位ID0~I(xiàn)D5的奇校驗(yàn)和偶校驗(yàn),作為對(duì)接收到ID的校驗(yàn)措施,以確保接收ID的正確性。
報(bào)文幀的響應(yīng)(response)由3~9個(gè)字節(jié)場(chǎng)(data field)組成,包括2、4或8字節(jié)的數(shù)據(jù)場(chǎng)(data field)和1個(gè)校驗(yàn)和場(chǎng)(checksum)。它們是由要發(fā)送數(shù)據(jù)的節(jié)點(diǎn)(主機(jī)節(jié)點(diǎn)或從機(jī)節(jié)點(diǎn))所發(fā)送的數(shù)據(jù)和校驗(yàn)場(chǎng)所組成,都屬于數(shù)據(jù)場(chǎng)。
校驗(yàn)和場(chǎng)(checksum)有兩種:一般的校驗(yàn)和場(chǎng)與增強(qiáng)的校驗(yàn)和場(chǎng)。一般的校驗(yàn)和是數(shù)據(jù)場(chǎng)所有字節(jié)數(shù)據(jù)和的反碼。和是按帶進(jìn)位加(ADDC)方式計(jì)算,所有數(shù)據(jù)字節(jié)和的補(bǔ)碼與校驗(yàn)和字節(jié)相加的和必須是“0xFF”。增強(qiáng)的校驗(yàn)和與一般的校驗(yàn)和的區(qū)別在于計(jì)算數(shù)據(jù)場(chǎng)和時(shí)加上了保護(hù)標(biāo)識(shí)符字節(jié)場(chǎng)。
3 LlN協(xié)議在普通單片機(jī)上的實(shí)現(xiàn)
現(xiàn)在單片機(jī)種類繁多,硬件資源各不相同,功能也千差萬(wàn)別。總體來(lái)講,基于普通單片機(jī)軟件實(shí)現(xiàn)LIN協(xié)議的方法可分為兩大類:一種是基于單片機(jī)通用串口的實(shí)現(xiàn)方式,另一種是基于單片機(jī)兩個(gè)普通端口位的位操作實(shí)現(xiàn)方法。
3. 1基于單片機(jī)通用串口LlN協(xié)議的實(shí)現(xiàn)
基于單片機(jī)通用串口的LIN協(xié)議的實(shí)現(xiàn)方法主要是針對(duì)具有通用串口的單片機(jī)來(lái)講的。這類單片機(jī)的代表當(dāng)屬最常用的51系列單片機(jī),如Atmel公司的AT89C51/52。
(1)基于單片機(jī)串口LlN主節(jié)點(diǎn)的實(shí)現(xiàn)
由LIN協(xié)議的分析可知,在一次幀通信過(guò)程中,主從節(jié)點(diǎn)在大部分時(shí)間里是以標(biāo)準(zhǔn)的串行通信數(shù)據(jù)幀的形式交換數(shù)據(jù)的,這也是LIN協(xié)議可以基于單片機(jī)通用串口實(shí)現(xiàn)的原因。幀通信的關(guān)鍵是要實(shí)現(xiàn)主節(jié)點(diǎn)和從節(jié)點(diǎn)的同步。在同步過(guò)程中,主、從節(jié)點(diǎn)所執(zhí)行的操作是不同的:主機(jī)節(jié)點(diǎn)的任務(wù)是要發(fā)送報(bào)文頭,從節(jié)點(diǎn)的任務(wù)是接收和判斷報(bào)文頭,實(shí)現(xiàn)與主節(jié)點(diǎn)的同步。報(bào)文頭的間隔場(chǎng)是一個(gè)基于主機(jī)節(jié)點(diǎn)時(shí)鐘頻率的13個(gè)以上位時(shí)(bit time)和至少1個(gè)位時(shí)的間隔界定符。對(duì)主節(jié)點(diǎn)來(lái)講,這一部分是實(shí)現(xiàn)主節(jié)點(diǎn)功能的關(guān)鍵。間隔場(chǎng)和間隔界定符的實(shí)現(xiàn)可采用改變串口波特率,用串口輸出特定數(shù)據(jù)的方法來(lái)實(shí)現(xiàn)。例如在一般情況下,單片機(jī)采用19.2kb/s波特率的速率傳輸數(shù)據(jù),可先將串口的波特率設(shè)置為9.6kb/s,則傳輸0xc0這樣一個(gè)數(shù)據(jù)就可以實(shí)現(xiàn)按照19.2kb/s的波特率來(lái)計(jì)算位時(shí)的同步間隔和同步間隔界定符的位時(shí)長(zhǎng)度要求(因若采用19.2kb/s的傳輸率傳輸00數(shù)據(jù)只能實(shí)現(xiàn)10個(gè)位時(shí)的同步間隔符,無(wú)法達(dá)到13個(gè)位時(shí)的要求)。隨后的PID場(chǎng)的發(fā)送和數(shù)據(jù)場(chǎng)的發(fā)送或接收,可以基于單片機(jī)的通用串口以正常的19.2.kb/s的波特率來(lái)操作。
基于串口LlN主節(jié)點(diǎn)硬件原理如圖3所示。

(2)基于單片機(jī)串口LlN從節(jié)點(diǎn)的實(shí)現(xiàn)
從節(jié)點(diǎn)實(shí)現(xiàn)的關(guān)鍵是能夠正確實(shí)時(shí)地接收?qǐng)?bào)文頭,達(dá)到與主節(jié)點(diǎn)的同步,為下一步的數(shù)據(jù)交換做好準(zhǔn)備;趩纹瑱C(jī)通用串口構(gòu)成的LIN從節(jié)點(diǎn)的實(shí)現(xiàn)方案有兩種:一種是查詢方式,另一種是中斷方式。兩種方法的區(qū)別在于報(bào)文頭接收判斷方法的不同。查詢方式硬件原理如圖4所示。





