基于普通單片機的LIN協(xié)議實現(xiàn)方案
發(fā)布時間:2008/6/3 0:00:00 訪問次數(shù):935
    
    
    1 概述
    lin協(xié)議是新出現(xiàn)的一種新型低成本串行通信總線,其全稱是local interconnect network,即局部互聯(lián)網(wǎng)絡。它最開始出現(xiàn)于汽車行業(yè),是為解決汽車智能化和網(wǎng)絡化的發(fā)展要求和降低汽車制造成本的矛盾而提出來的一種串行總線協(xié)議,主要用于車門、車燈等需要簡單控制但又要求智能控制的場合。它的主要特點是:采用單個主控制器/多從設備通信模式;基于普通uart/sci接口硬件實現(xiàn),協(xié)議簡單;網(wǎng)絡傳輸速率不高,最高可達20kb/s。由于lin協(xié)議的突出特點是協(xié)議對硬件的依賴程度低,可以基于普通單片機的通用串口等硬件資源以軟件方式實現(xiàn),成本低廉,因此可廣泛應用于汽車行業(yè)以外的其他領域,如智能家庭網(wǎng)絡內(nèi)部的數(shù)據(jù)傳輸、節(jié)點控制等場合。
    本文依據(jù)對lin協(xié)議的分析,對其協(xié)議在普通單片機上的具體實現(xiàn),即如何利用單片機有限的硬件資源實現(xiàn)lin的主節(jié)點、從節(jié)點,進行可行性方案的研究、探討。
    
    2 lin協(xié)議的簡介
    lin協(xié)議的最新版本是lin specification package revision 2.o,包括協(xié)議規(guī)范、節(jié)點診斷配置規(guī)范、物理層規(guī)范、api規(guī)范等幾個方面,從硬件配置到節(jié)點配置語言都作了詳細的規(guī)定。下面就其協(xié)議規(guī)范作一簡要介紹和分析。
    lin的數(shù)據(jù)傳輸是采用報文幀的形式進行的。一個完整的報文幀由1個主機節(jié)點發(fā)送的報文頭(header)和1個主機或從機節(jié)點發(fā)送的響應(response)組成,如圖1所示。報文頭包括1個間隔場(break)、1個同步字節(jié)場(synch)和1個保護標識符字節(jié)場pid(protected identifier)。間隔場是由持續(xù)了至少13個位時的顯性電平和至少1個位時的隱性電平組成;由主機節(jié)點產(chǎn)生,標志著一次數(shù)據(jù)通信過程報文幀的開始。同步字節(jié)場包含時鐘同步信息。同步字節(jié)場的格式是0x55,表現(xiàn)在8個位定時中有5個下降沿,即隱性跳變到顯性的邊沿。
    
    
    所有從機節(jié)點在主機節(jié)點發(fā)布報文頭之后都應能檢測到間隔場的存在,并且在正確地接收同步字節(jié)場后,準確計算出主機節(jié)點將要發(fā)送數(shù)據(jù)的波特率,并以此波特率作為下一步要發(fā)送或接收數(shù)據(jù)的波特率的設定值。這樣,經(jīng)過了間隔場和同步字節(jié)場的接收,所有的從機節(jié)點達到了與主機節(jié)點的同步。
    下一步,所有的從機節(jié)點以計算得到的波特率來接收報文頭的保護標識符字節(jié)場。
    保護標識符字節(jié)場pid(protected identifier)與標準的串行通信數(shù)據(jù)幀格式相同,由1位起始位和1位停止位及8位數(shù)據(jù)位組成,屬于數(shù)據(jù)場,如圖2所示。
    保護標識符字節(jié)場由兩部分組成:標識符和標識符奇偶校驗。id0~id5屬標識符,確定了標識符的內(nèi)容,可從0~63取值。其中,0~59(0x3b)用于信號傳送幀,60(0x3c)和61(0x3d)用于傳送診斷數(shù)據(jù),62(0x3e)保留用于用戶定義的擴展,63(0x3f)保留用于將來協(xié)議升級。奇偶校驗位p0和p1則是對標識符位id0~id5的奇校驗和偶校驗,作為對接收到id的校驗措施,以確保接收id的正確性。
    報文幀的響應(response)由3~9個字節(jié)場(data field)組成,包括2、4或8字節(jié)的數(shù)據(jù)場(data field)和1個校驗和場(checksum)。它們是由要發(fā)送數(shù)據(jù)的節(jié)點(主機節(jié)點或從機節(jié)點)所發(fā)送的數(shù)據(jù)和校驗場所組成,都屬于數(shù)據(jù)場。
    校驗和場(checksum)有兩種:一般的校驗和場與增強的校驗和場。一般的校驗和是數(shù)據(jù)場所有字節(jié)數(shù)據(jù)和的反碼。和是按帶進位加(addc)方式計算,所有數(shù)據(jù)字節(jié)和的補碼與校驗和字節(jié)相加的和必須是“0xff”。增強的校驗和與一般的校驗和的區(qū)別在于計算數(shù)據(jù)場和時加上了保護標識符字節(jié)場。
    
    3 lln協(xié)議在普通單片機上的實現(xiàn)
    現(xiàn)在單片機種類繁多,硬件資源各不相同,功能也千差萬別。總體來講,基于普通單片機軟件實現(xiàn)lin協(xié)議的方法可分為兩大類:一種是基于單片機通用串口的實現(xiàn)方式,另一種是基于單片機兩個普通端口位的位操作實現(xiàn)方法。
    3. 1基于單片機通用串口lln協(xié)議的實現(xiàn)
    基于單片機通用串口的lin協(xié)議的實現(xiàn)方法主要是針對具有通用串口的單片機來講的。這類單片機的代表當屬最常用的51系列單片機,如atmel公司的at89c51/52。
    (1)基于單片機串口lln主節(jié)點的實現(xiàn)
    由lin協(xié)議的分析可知,在一次幀通信過程中,主從節(jié)點在大部分時間里是以標準的串行通信數(shù)據(jù)幀
    
    
    1 概述
    lin協(xié)議是新出現(xiàn)的一種新型低成本串行通信總線,其全稱是local interconnect network,即局部互聯(lián)網(wǎng)絡。它最開始出現(xiàn)于汽車行業(yè),是為解決汽車智能化和網(wǎng)絡化的發(fā)展要求和降低汽車制造成本的矛盾而提出來的一種串行總線協(xié)議,主要用于車門、車燈等需要簡單控制但又要求智能控制的場合。它的主要特點是:采用單個主控制器/多從設備通信模式;基于普通uart/sci接口硬件實現(xiàn),協(xié)議簡單;網(wǎng)絡傳輸速率不高,最高可達20kb/s。由于lin協(xié)議的突出特點是協(xié)議對硬件的依賴程度低,可以基于普通單片機的通用串口等硬件資源以軟件方式實現(xiàn),成本低廉,因此可廣泛應用于汽車行業(yè)以外的其他領域,如智能家庭網(wǎng)絡內(nèi)部的數(shù)據(jù)傳輸、節(jié)點控制等場合。
    本文依據(jù)對lin協(xié)議的分析,對其協(xié)議在普通單片機上的具體實現(xiàn),即如何利用單片機有限的硬件資源實現(xiàn)lin的主節(jié)點、從節(jié)點,進行可行性方案的研究、探討。
    
    2 lin協(xié)議的簡介
    lin協(xié)議的最新版本是lin specification package revision 2.o,包括協(xié)議規(guī)范、節(jié)點診斷配置規(guī)范、物理層規(guī)范、api規(guī)范等幾個方面,從硬件配置到節(jié)點配置語言都作了詳細的規(guī)定。下面就其協(xié)議規(guī)范作一簡要介紹和分析。
    lin的數(shù)據(jù)傳輸是采用報文幀的形式進行的。一個完整的報文幀由1個主機節(jié)點發(fā)送的報文頭(header)和1個主機或從機節(jié)點發(fā)送的響應(response)組成,如圖1所示。報文頭包括1個間隔場(break)、1個同步字節(jié)場(synch)和1個保護標識符字節(jié)場pid(protected identifier)。間隔場是由持續(xù)了至少13個位時的顯性電平和至少1個位時的隱性電平組成;由主機節(jié)點產(chǎn)生,標志著一次數(shù)據(jù)通信過程報文幀的開始。同步字節(jié)場包含時鐘同步信息。同步字節(jié)場的格式是0x55,表現(xiàn)在8個位定時中有5個下降沿,即隱性跳變到顯性的邊沿。
    
    
    所有從機節(jié)點在主機節(jié)點發(fā)布報文頭之后都應能檢測到間隔場的存在,并且在正確地接收同步字節(jié)場后,準確計算出主機節(jié)點將要發(fā)送數(shù)據(jù)的波特率,并以此波特率作為下一步要發(fā)送或接收數(shù)據(jù)的波特率的設定值。這樣,經(jīng)過了間隔場和同步字節(jié)場的接收,所有的從機節(jié)點達到了與主機節(jié)點的同步。
    下一步,所有的從機節(jié)點以計算得到的波特率來接收報文頭的保護標識符字節(jié)場。
    保護標識符字節(jié)場pid(protected identifier)與標準的串行通信數(shù)據(jù)幀格式相同,由1位起始位和1位停止位及8位數(shù)據(jù)位組成,屬于數(shù)據(jù)場,如圖2所示。
    保護標識符字節(jié)場由兩部分組成:標識符和標識符奇偶校驗。id0~id5屬標識符,確定了標識符的內(nèi)容,可從0~63取值。其中,0~59(0x3b)用于信號傳送幀,60(0x3c)和61(0x3d)用于傳送診斷數(shù)據(jù),62(0x3e)保留用于用戶定義的擴展,63(0x3f)保留用于將來協(xié)議升級。奇偶校驗位p0和p1則是對標識符位id0~id5的奇校驗和偶校驗,作為對接收到id的校驗措施,以確保接收id的正確性。
    報文幀的響應(response)由3~9個字節(jié)場(data field)組成,包括2、4或8字節(jié)的數(shù)據(jù)場(data field)和1個校驗和場(checksum)。它們是由要發(fā)送數(shù)據(jù)的節(jié)點(主機節(jié)點或從機節(jié)點)所發(fā)送的數(shù)據(jù)和校驗場所組成,都屬于數(shù)據(jù)場。
    校驗和場(checksum)有兩種:一般的校驗和場與增強的校驗和場。一般的校驗和是數(shù)據(jù)場所有字節(jié)數(shù)據(jù)和的反碼。和是按帶進位加(addc)方式計算,所有數(shù)據(jù)字節(jié)和的補碼與校驗和字節(jié)相加的和必須是“0xff”。增強的校驗和與一般的校驗和的區(qū)別在于計算數(shù)據(jù)場和時加上了保護標識符字節(jié)場。
    
    3 lln協(xié)議在普通單片機上的實現(xiàn)
    現(xiàn)在單片機種類繁多,硬件資源各不相同,功能也千差萬別。總體來講,基于普通單片機軟件實現(xiàn)lin協(xié)議的方法可分為兩大類:一種是基于單片機通用串口的實現(xiàn)方式,另一種是基于單片機兩個普通端口位的位操作實現(xiàn)方法。
    3. 1基于單片機通用串口lln協(xié)議的實現(xiàn)
    基于單片機通用串口的lin協(xié)議的實現(xiàn)方法主要是針對具有通用串口的單片機來講的。這類單片機的代表當屬最常用的51系列單片機,如atmel公司的at89c51/52。
    (1)基于單片機串口lln主節(jié)點的實現(xiàn)
    由lin協(xié)議的分析可知,在一次幀通信過程中,主從節(jié)點在大部分時間里是以標準的串行通信數(shù)據(jù)幀