LIN主從節(jié)點(diǎn)設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:LIN是一種串行通訊協(xié)議,用于實(shí)現(xiàn)汽車中的分布式電子系統(tǒng)控制。介紹了具體的LIN主從節(jié)點(diǎn)硬件組成和軟件實(shí)現(xiàn)方法,同時(shí)提出若干抗千擾措施。測(cè)試證明按照這種方法設(shè)計(jì)的LIN網(wǎng)絡(luò)能正確實(shí)現(xiàn)通信。
關(guān)鍵詞:LIN總線;主節(jié)點(diǎn);從節(jié)點(diǎn);CAN總線
LIN(LocalInterconnect Network)是一種低速汽車網(wǎng)絡(luò),采用單主多從、異步串行通信方式,定位于現(xiàn)有汽車網(wǎng)絡(luò)(如CAN總線)的輔助和補(bǔ)充,目的是以低廉的價(jià)格聯(lián)接車上的傳感器、執(zhí)行器和處理器,并且允許不同廠家的模塊隨時(shí)添加進(jìn)來(lái)。LIN的主要特點(diǎn)有:低成本,基于通用UART接口,幾乎所有微控制器都具備LIN必須的硬件;傳輸速率最高可達(dá)20 Kb/s;從節(jié)點(diǎn)不需晶振或陶瓷震蕩器就能實(shí)現(xiàn)自同步,節(jié)省了從設(shè)備的硬件成本;單主控器/多從設(shè)備模式,無(wú)需仲裁機(jī)制;不需要改變LIN從節(jié)點(diǎn)的硬件和軟件就可以在網(wǎng)絡(luò)上增加節(jié)點(diǎn)等。
1 主從節(jié)點(diǎn)硬件設(shè)計(jì)
LIN網(wǎng)絡(luò)由一個(gè)主節(jié)點(diǎn)和最多15個(gè)從節(jié)點(diǎn)構(gòu)成。設(shè)計(jì)LIN節(jié)點(diǎn)可以有三種方法:用普通I/O口線模擬異步串行通信;用UART和定時(shí)器實(shí)現(xiàn);用專門(mén)的LIN模塊來(lái)實(shí)現(xiàn)。第一種方法成本最低,但CPU負(fù)擔(dān)最重,代碼較多;第二種方法成本適中,CPU負(fù)擔(dān)較輕;第三種方法成本較高,但CPU負(fù)擔(dān)最輕,代碼最少。這里采用最常用的一種,即基于UART和定時(shí)器的LIN節(jié)點(diǎn)設(shè)計(jì)和實(shí)現(xiàn)。LIN網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示。
在LIN網(wǎng)絡(luò)中所有的通信都由主節(jié)點(diǎn)發(fā)起,同時(shí)還承擔(dān)與CAN總線通信的任務(wù),因此主節(jié)點(diǎn)硬件電路主要包括微控制器、LIN收發(fā)器和CAN收發(fā)器。LIN收發(fā)器將協(xié)議控制器向TXD引腳輸入的傳輸數(shù)據(jù)流轉(zhuǎn)換成總線信號(hào)并由收發(fā)器控制回轉(zhuǎn)速率和波形以減少EME;CAN收發(fā)器作為CAN總線與控制器之間的接口以及提供CAN總線的差動(dòng)發(fā)送和接收功能。需要注意的是主節(jié)點(diǎn)電路中必須連接一個(gè)1 kΩ的上拉電阻和一個(gè)二極管。采用Microchip公司的PICl8系列單片機(jī)作為主節(jié)點(diǎn)的微控制器,MCP2551作為CAN總線收發(fā)器,MCP201作為L(zhǎng)IN總線收發(fā)器。主節(jié)點(diǎn)硬件原理圖如圖2所示。在實(shí)際設(shè)計(jì)過(guò)程中還要注意EMI(電磁干擾)和ESD(靜電危害)對(duì)LIN總線的干擾,為了避免EMI的影響,LIN協(xié)會(huì)把LIN的最高位速率限制在20 Kb/s,同時(shí)最大傳輸距離不能超過(guò)40 m;ESD表現(xiàn)為短暫而幅度迅速衰減的高壓、大電流放電,而LIN總線收發(fā)器最容易受到:ESD的沖擊,因此設(shè)計(jì)時(shí)可以在電源線和地線之間串聯(lián)電阻和電容,也可以把地線加粗,并與其他大面積接地導(dǎo)體就近、低阻抗連接。
從節(jié)點(diǎn)采用PIC18F1320作為主控制器,MCP201作為L(zhǎng)IN總線收發(fā)器;需要注意的是從節(jié)點(diǎn)中必須連接一個(gè)30 kΩ的上拉電阻,當(dāng)然串聯(lián)二極管也是必須的,它可以防止電子控制單元在本地電池掉電的情況下通過(guò)LIN總線上電。從節(jié)點(diǎn)電路原理圖與主節(jié)點(diǎn)相似,去掉CAN收發(fā)器,其余不再贅述。
2 軟件設(shè)計(jì)
LIN主節(jié)點(diǎn)是LIN總線的控制者,它將決定在什么時(shí)候發(fā)送哪個(gè)報(bào)文到LIN總線上,同時(shí)它需要檢測(cè)從節(jié)點(diǎn)和總線的工作狀態(tài)。因?yàn)長(zhǎng)IN主節(jié)點(diǎn)是通訊的發(fā)起者,在每個(gè)報(bào)文幀開(kāi)始時(shí)它需要發(fā)送出同步間歇,同步字段以及標(biāo)識(shí)字段。如果這個(gè)報(bào)文幀是發(fā)送控制命令到從節(jié)點(diǎn),主節(jié)點(diǎn)接著將發(fā)送出數(shù)據(jù)字段及校驗(yàn)和字段;而如果這個(gè)報(bào)文幀是發(fā)送查詢命令到從節(jié)點(diǎn),此時(shí)主節(jié)點(diǎn)將從LIN總線讀取從節(jié)點(diǎn)發(fā)送的數(shù)據(jù)字段和校驗(yàn)和字段。
LIN從節(jié)點(diǎn)用UART實(shí)現(xiàn)通訊,從中檢出主節(jié)點(diǎn)發(fā)送給本從節(jié)點(diǎn)的命令,并執(zhí)行相應(yīng)動(dòng)作。要正確實(shí)現(xiàn)LIN總線的通信,主從節(jié)點(diǎn)的初始化是非常重要的,圖3、圖4給出了主從節(jié)點(diǎn)的初始化流程圖。其余還有LIN主節(jié)點(diǎn)UART接收數(shù)據(jù)流程圖,LIN從節(jié)點(diǎn)中斷服務(wù)流程圖等限于篇幅不一一列出。
3 LIN總線通信測(cè)試
如前所述,一個(gè)LIN網(wǎng)絡(luò)由一個(gè)LIN主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn)組成,報(bào)文的傳送方向和時(shí)間由主節(jié)點(diǎn)決定。從節(jié)點(diǎn)是根據(jù)報(bào)頭中的ID號(hào)來(lái)決定是否接收一幀數(shù)據(jù),在檢測(cè)到正確的報(bào)文ID號(hào)后,從節(jié)點(diǎn)將根據(jù)ID號(hào)判斷后續(xù)操作:是否接收后續(xù)數(shù)據(jù)或者發(fā)送數(shù)據(jù)到LIN總線,并初始化相應(yīng)操作。在本子系統(tǒng)中,設(shè)計(jì)了兩個(gè)從節(jié)點(diǎn),定義的報(bào)文ID號(hào)如表1所示。
在LIN總線波特率設(shè)為9 600 b/s時(shí),利用數(shù)字存儲(chǔ)示波器對(duì)LlN從接點(diǎn)通信過(guò)程進(jìn)行了測(cè)試。另外,還利用ZLGCANtest軟件對(duì)LIN網(wǎng)絡(luò)的通信功能做了測(cè)試,一切結(jié)果顯示均正常,證明設(shè)計(jì)LIN網(wǎng)絡(luò)的通信程序設(shè)計(jì)是正確的。
4 結(jié)語(yǔ)
在歐美、日本等發(fā)達(dá)國(guó)家,LIN總線被越來(lái)越多地應(yīng)用到車身網(wǎng)絡(luò)中,但在我國(guó)LIN總線的應(yīng)用還處在起步階段,因此對(duì)LIN總線通信的研究顯得尤為重要。本文設(shè)計(jì)了基于PIC單片機(jī)的LIN總線主從節(jié)點(diǎn),并實(shí)現(xiàn)了主從節(jié)點(diǎn)間的通信,其中,位定時(shí)的設(shè)定是影響通信速度的重要因素。該研究為下一步將LIN總線應(yīng)用到汽車的聯(lián)合裝配控制單元中打下良好的基礎(chǔ)。