《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Microchip單片機及收發(fā)器實現(xiàn)的低成本LIN總線
基于Microchip單片機及收發(fā)器實現(xiàn)的低成本LIN總線
來源:微型機與應用2010年第14期
謝驍斐1,孫運鵬2
(1.中鋼集團洛陽耐火材料研究院有限公司,,河南 洛陽471039,;2.微芯商貿(mào)(上海)有限公司沈陽分
摘要: 介紹了幾款Microchip單片機及收發(fā)器實現(xiàn)低成本的汽車子網(wǎng)LIN總線節(jié)點,。基于Microchip單片機內帶的增強型通用同步/異步收發(fā)器 (EUSART)實現(xiàn)LIN的控制器,,并用Microchip的MCP2021作為LIN的電平轉換器,,最終實現(xiàn)一主多從的低成本的LIN網(wǎng)絡。
Abstract:
Key words :

摘  要: 介紹了幾款Microchip單片機收發(fā)器實現(xiàn)低成本的汽車子網(wǎng)LIN總線節(jié)點,?;贛icrochip單片機內帶的增強型通用同步/異步收發(fā)器(EUSART)實現(xiàn)LIN的控制器,并用Microchip的MCP2021作為LIN的電平轉換器,,最終實現(xiàn)一主多從的低成本的LIN網(wǎng)絡,。
關鍵詞: LIN總線;收發(fā)器,;增強型通用同步/異步收發(fā)器,;CAN總線

    隨著汽車總線應用的日益普及以及對汽車成本的要求越來越嚴格,LIN總線的市場占有率越來越高,。本文從低成本的角度來實現(xiàn)LIN總線的節(jié)點,,具有非常高的實用價值。
1 LIN的基本知識與發(fā)展
1.1 LIN的基本知識

    局域互連網(wǎng)絡LIN(Local Interconnect Network)是低成本的串行通信網(wǎng)絡,,用于實現(xiàn)汽車中的分布式電子系統(tǒng)控制,,是現(xiàn)有多種汽車網(wǎng)絡在功能上的補充;同時它也是一個開放的標準,作為CAN總線的子總線,,能緩解CAN總線數(shù)據(jù)擁擠的現(xiàn)狀,。
    由于LIN總線是可靠、低成本,、開放標準的網(wǎng)絡解決方案,,它可以簡化現(xiàn)存的多點解決方案,并且能降低在汽車電子領域中的開發(fā),、生產(chǎn),、服務和后勤成本。
1.2 LIN的起源與發(fā)展
    LIN聯(lián)盟成立于1999年,,并發(fā)布了LIN 1.0版本,。2000年,LIN聯(lián)盟再次發(fā)布了1.1版本,。2001年,,第一輛采用LIN1.1版本的量產(chǎn)汽車面世。2003年,,2.0版本出現(xiàn),。2006年,2.1版本面世并沿用至今,。
1.3 LIN的市場
    LIN總線產(chǎn)品已經(jīng)成為汽車總線的第二大市場,,預計將成為未來增長最快的一個市場。第一大市場是CAN總線,,其在2006年已經(jīng)達到頂峰,。
2 LIN的基本概念
    LIN在物理層是單線實現(xiàn)的,一般電壓范圍在8 V~18 V,。LIN網(wǎng)絡是單主多從結構,,由于只有一個主節(jié)點,所以不存在總線仲裁,??偩€的速度一般在2.4 kbd~19.6 kbd之間。典型節(jié)點數(shù)為2~10個,,由于阻抗匹配的原因,,最多不能超過16個[1]。如圖1所示,。

    LIN總線為串行通信方式,,編碼采用非歸零碼,8N1(8個數(shù)據(jù)位,,沒有校驗位,1個停止位)方式,如圖2所示,。每幀的數(shù)據(jù)字節(jié)數(shù)可變,,為2~8 B。在數(shù)據(jù)字節(jié)結束后,,會發(fā)一個校驗和來進行校驗,。
    在LIN網(wǎng)絡中,主節(jié)點的時鐘由高精度的晶振產(chǎn)生,,從節(jié)點一般用RC震蕩器產(chǎn)生,。在本文中,從節(jié)點的時鐘可以用Microchip單片機的內部RC震蕩器來實現(xiàn),。
3 LIN協(xié)議的基本知識
    LIN的報文分為兩部分,,一是主任務,也叫報文頭,;另一個部分是從任務,,也叫響應場。如圖3所示,。

    主任務位于主機節(jié)點內部,,都是由主節(jié)點發(fā)出,它負責報文的進度表,、發(fā)送報文頭(HEADER),。從任務位于所有的(即主機和從機)節(jié)點中,其中一個(主機節(jié)點或從機節(jié)點)發(fā)送報文的響應(RESPONSE),。
3.1 報文頭
    報文頭分為三部分,,按順序分別叫同步間隔、同步字段,、標識符字段,。
    同步間隔是一個長時間的低電平(顯性總線電平),低電平時間要大于10個位定時時間,,通常為13個位定時時間,。在長時間的低電平之后,要跟著一個短時間的高電平(隱性總線電平),,一般為1~4個位定時時間[2],。
    同步字段包含了時鐘的同步信息。它的內容為0x55,,表現(xiàn)在8個位定時中有5個下降沿(隱性跳變到顯性的邊沿),。從節(jié)點通過同步字段,可以使自己的總線速率與主節(jié)點同步,。
    標識符字段定義了報文的內容和長度,。其中,,內容是由6個標識符位和2個奇偶校驗位組成,如圖4所示,。標識符位的第5位和第6位(ID4和ID5)定義了報文數(shù)據(jù)場的長度,。

3.2 響應場
    響應場包含數(shù)據(jù)字段和校驗和兩部分。
    數(shù)據(jù)字段由8 bit數(shù)據(jù)的字節(jié)組成,,傳輸由最低位(LSB)開始,。校驗和按照帶進位加的方式計算,每個進位都被加到本次計算結果的最低位,。
3.3 保留的標識符
    標識符為0x3C和0x3D的標識符被用做診斷,。其中0x3C是主機請求幀,它可以從主機向從機節(jié)點發(fā)送命令和數(shù)據(jù),。0x3D是從機響應幀,,它觸發(fā)一個從機節(jié)點(由一個優(yōu)先的下載幀編址)向主機節(jié)點發(fā)送數(shù)據(jù)。
    標識符為0x3E是由用戶定義的自由用法,,標識符為0x3F是為將來使用而嚴格保留的,。
4 Microchip單片機的軟硬件實現(xiàn)
4.1 硬件實現(xiàn)
    主節(jié)點一般采用Flash比較大的Microchip中檔8位單片機,或者采用帶CAN控制器的高檔8位單片機或16位單片機作為控制器,。時鐘采用高精度石英晶振,。物理層的電平轉換采用Microchip的收發(fā)器MCP2021。
    從節(jié)點可用低成本的Microchip中,、低檔8位單片機,。時鐘用單片機內部自帶的RC震蕩器。內部RC震蕩器在常溫25 ℃時,,精度為1%,,全溫度范圍(-40 ℃~+125 ℃)內精度為5%[1]。物理層的電平轉換采用Microchip的收發(fā)器MCP2021,。
4.2 軟件實現(xiàn)
4.2.1 主節(jié)點

    主節(jié)點完全按照LIN規(guī)范實現(xiàn),。主節(jié)點的任務就是發(fā)送報文頭和發(fā)送接收數(shù)據(jù),實現(xiàn)一個網(wǎng)關的作用,。另外,,單片機的剩余功能,可以用來做一些A/D和開關量的采集,,還可以驅動一些蜂鳴器,、小電機或者LED和LCD等器件。主節(jié)點發(fā)送流程如圖5所示,。

    LIN總線的通信可以通過配置單片機的EUSART來實現(xiàn),。每次通信都由主節(jié)點啟動,此處不考慮從節(jié)點到從節(jié)點的通信,??偩€的配置也由主節(jié)點來實現(xiàn),,具體波特率可以通過波特率控制寄存器來實現(xiàn)。這里采用9 600的波特率,。
    標識符不是一個節(jié)點的地址,,而是一個報文的描述符,。當主節(jié)點發(fā)送一個0x3C的命令后,,再發(fā)送8 B的00H,總線就進入休眠模式,。在休眠模式下,,總線處于空閑狀態(tài),因此任何一個從節(jié)點都可以喚醒總線,。
    主節(jié)點采用高精度的石英晶振作為時鐘源,,可以產(chǎn)生低誤差的時鐘信號。在這里,,要把主節(jié)點設置為異步半雙工通信模式,,8 bit數(shù)據(jù)模式。時鐘選擇為內部時鐘,。
    由于EUSART有“發(fā)送間隔字符位(SENDB)”,,可以在每次發(fā)送數(shù)據(jù)前發(fā)送同步間隔字符,這樣可以省掉不少軟件開銷,,使單片機可以致力于其他邏輯的運算,。
4.2.2 從節(jié)點
    從節(jié)點不需要系統(tǒng)配置的信息,所有從節(jié)點接收所有報文,,然后再判斷是否需要執(zhí)行,。
    從節(jié)點不需要外接石英晶振,可以用單片機內部自帶的RC震蕩器實現(xiàn),。Microchip的中端8位單片機大多數(shù)都內帶高精度的RC震蕩器,,在常溫下(25℃),經(jīng)過校準可以達到±1%的精度,。
    每個單片機在出廠時都經(jīng)過校準,,并把校準字寫在Flash空間的最后一位。在程序開始運行時,,會把校準值裝載到W寄存器里,。在程序的第一條指令中執(zhí)行MOVWF OSCCAL,即可將W寄存器里的值送到內部RC震蕩器的校準寄存器里,,從而實現(xiàn)校準,。
    從節(jié)點先檢測總線電平,當長時間的隱性電平結束,,出現(xiàn)大于10個位定時的顯性電平后,,開始數(shù)5個下降沿的時間,,用時間值除以8,就可以算出波特率,。然后從總線上讀取數(shù)據(jù),,解碼ID,處理響應,。
    EUSART支持波特率的自動檢測和校準,,可以使軟件代碼大量簡化,。從節(jié)點可以在總線空閑時進入休眠狀態(tài),當從節(jié)點檢測到主節(jié)點發(fā)出的同步間隔時,可以從休眠狀態(tài)喚醒,。
    當從節(jié)點被其他外部中斷喚醒時(例如A/D轉換完成,,外部IO電平變化等),,從節(jié)點可以喚醒休眠的總線,。
    如果從節(jié)點的功能比較簡單,工作電流比較小,,可以通過收發(fā)器MCP2021的參考電壓輸出端來供電,。MCP2021有兩種型號,參考電壓的輸出分別為5 V和3.3 V,,適應5 V和3.3 V的單片機,。這個參考電壓的輸出電流最大為50 mA,所以不適合工作電流比較大的場合[3-4],。
參考文獻
[1] LIN規(guī)范(V1.2),,廣州周立功單片機發(fā)展有限公司,2005.
[2] LIN Specification Package(Revision 2.1).LIN Consortium,,2006.
[3] PIC16F688數(shù)據(jù)手冊.DS41203B_CN.2006.
[4] MCP202X數(shù)據(jù)手冊.DS22018D_CN.2009.
 

此內容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載。