呂晉超,葉玖林,李世超
(電子科技大學(xué),微電子與固體電子學(xué)院,四川成都610054)
基于MCS-51的CAN/LIN網(wǎng)關(guān)設(shè)計
呂晉超,葉玖林,李世超
(電子科技大學(xué),微電子與固體電子學(xué)院,四川成都610054)
CAN總線和LIN總線在汽車工業(yè)中大規(guī)模應(yīng)用后,如何有效地解決CAN總線和LIN總線相互轉(zhuǎn)換已然成為一個問題。論文基于MCS-51提供了一個有效的解決方案,運(yùn)用MCS-51定時器的定時功能,定時向各節(jié)點發(fā)起通訊來達(dá)到實現(xiàn)數(shù)據(jù)傳輸?shù)哪康摹?/p>
MCS-51;CAN總線;LIN總線;網(wǎng)關(guān)
在汽車電子工業(yè)的發(fā)展過程中,CAN總線協(xié)議和 LIN總線協(xié)議在其中扮演著重要的角色。CAN適用于要求高速長距離傳輸?shù)膱龊?,而對于低速廉價的要求,LIN更加適用,但因為一個系統(tǒng)內(nèi)出現(xiàn)了兩個不同的總線協(xié)議,并且兩個協(xié)議之間要進(jìn)行數(shù)據(jù)交換,所以我們就需要CAN/LIN網(wǎng)關(guān)對速率、其數(shù)據(jù)等進(jìn)行轉(zhuǎn)換,下面我們對CAN和LIN協(xié)議進(jìn)行簡單介紹。
1.1 CAN協(xié)議
CAN總線是德國BOSCH公司從80年代初為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議。CAN總線具有如下特點:可在各節(jié)點之間實現(xiàn)自由通信。CAN總線采用了多主競爭式總線結(jié)構(gòu),具有多主站運(yùn)行和分散仲裁的串行總線以及廣播通信的特點;通信速率快,通信速率最高可達(dá)1Mbps;結(jié)構(gòu)簡單,只有2根線與外部相連,并且內(nèi)部集成了錯誤探測和管理模塊。CAN總線的數(shù)據(jù)傳輸采用短幀的格式,可分為標(biāo)準(zhǔn)格式幀和擴(kuò)展格式幀,幀則可分為:數(shù)據(jù)幀、遠(yuǎn)程幀、錯誤幀、過載幀。
1.2 LIN協(xié)議
LIN總線是由1999年成立的LIN聯(lián)盟所推出的專門用于汽車控制的串行通信協(xié)議。在對通訊速率要求不高的應(yīng)用中(在門窗、空調(diào)、照明燈等),LIN總線是CAN總線的低成本的有效補(bǔ)充。LIN總線具有如下特點:低成本:基于通用UART接口幾乎所有微控制器都具備LIN必需的硬件;單主控器/多從設(shè)備模式無需仲裁機(jī)制;傳輸速率最高可達(dá)20Kbit/s。LIN總線的傳輸(報文傳輸)由報文幀的格式形成和控制,一個報文幀是由主機(jī)節(jié)點發(fā)送的報頭和由主機(jī)或一個從機(jī)節(jié)點發(fā)送的響應(yīng)組成。報文幀的報頭包括同步間隔場、同步場和標(biāo)識符場。報文幀的響應(yīng)則由字節(jié)場組成:數(shù)據(jù)場和校驗和場。
CAN總線和LIN總線是一個系統(tǒng)中兩個不同的總線,并且要進(jìn)行數(shù)據(jù)交換,CAN/LIN網(wǎng)關(guān)就是充當(dāng)一個橋梁的角色,在網(wǎng)關(guān)內(nèi)部實現(xiàn)協(xié)議的轉(zhuǎn)換,除此之外網(wǎng)關(guān)還要匹配兩種總線的傳輸速率。就硬件邏輯實現(xiàn)的角度,可采用“CAN接口驅(qū)動—中央控制器—LIN接口驅(qū)動”的結(jié)構(gòu)。
2.1 CAN接口驅(qū)動
一個CAN接口驅(qū)動由一個CAN控制器、CAN收發(fā)器。CAN控制器完成CAN協(xié)議的所要求的報文格式的發(fā)送和接收,CAN收發(fā)器為CAN控制器和CAN總線提供物理接口。本文的CAN控制器采用 Philips公司的 SJA1000,SJA1000具有支持CAN2.0,包括標(biāo)準(zhǔn)的和擴(kuò)展的數(shù)據(jù)和遠(yuǎn)程幀、具有擴(kuò)展的64字節(jié)FIFO接收緩沖器、具有仲裁丟失捕獲寄存器的特點;CAN的收發(fā)器采用的是Philips公司的 TJA1050,TJA1050具有高速率(最高達(dá)1Mbps)、電磁抗干擾EMI性極高、驅(qū)動能力強(qiáng)等的特點。
2.2 LIN接口驅(qū)動
由于LIN協(xié)議相較于CAN協(xié)議較為簡單并且對速度要求不高,所以LIN的接口驅(qū)動中沒有LIN控制器,LIN總線的協(xié)議只需具有UART串口的微處理器軟件編寫,所以LIN接口驅(qū)動只有單獨(dú)的LIN收發(fā)器組成。LIN 收發(fā)器采用 Philips公司的TJA1020,TJA1020具有波特率高達(dá)20Kbps、高抗電磁干擾性、控制輸入電平和3.3V以及5V的器件兼容等的特點。
2.3 中央控制器
中央控制器是CAN/LIN網(wǎng)關(guān)的核心,它起著控制系統(tǒng)的數(shù)據(jù)發(fā)送和接收、報文格式的轉(zhuǎn)換等功能。中央控制器采用MCS-51單片機(jī),它具有操作簡單、成本低、穩(wěn)定性高等的特點,下圖為CAN/LIN網(wǎng)關(guān)的硬件電路圖。
有了硬件的基礎(chǔ),就需要軟件的實現(xiàn)來完成網(wǎng)關(guān)的功能。網(wǎng)關(guān)的功能主要功能是實現(xiàn) CAN/LIN協(xié)議的轉(zhuǎn)換,但同時網(wǎng)關(guān)是CAN總線上的一個節(jié)點,它能實現(xiàn)CAN總線的相互通信,網(wǎng)關(guān)也是LIN總線上的主機(jī),由它來控制LIN總線上節(jié)點之間的通信。無論是CAN協(xié)議向LIN協(xié)議的轉(zhuǎn)換還是LIN協(xié)議向CAN協(xié)議轉(zhuǎn)換都需要向網(wǎng)關(guān)發(fā)送數(shù)據(jù),網(wǎng)關(guān)處理發(fā)送過來的數(shù)據(jù),傳輸?shù)搅硪粭l總線上。如下圖所示,CAN(或LIN)節(jié)點分別將數(shù)據(jù)發(fā)送到總線上,中間的網(wǎng)關(guān)接收總線上的數(shù)據(jù),經(jīng)數(shù)據(jù)處理,發(fā)到LIN(或CAN)總線上,最終LIN(或CAN)節(jié)點接收總線的數(shù)據(jù),需要注意的是網(wǎng)關(guān)中的4個緩沖器并不是硬件緩沖器,而是軟件緩沖器,是程序模塊,起對數(shù)據(jù)進(jìn)行處理的作用。
本文利用的是分時向各節(jié)點發(fā)起通訊,具體的軟件實現(xiàn)可利用MCS-51單片機(jī)的定時功能,采用依次向各節(jié)點發(fā)起通信的方式來進(jìn)行數(shù)據(jù)交換。將MSC-51的定時器0設(shè)置一定的時間T,每隔時間T就去檢測各節(jié)點的狀態(tài),如下圖所示,最初是初始化MCS-51單片機(jī)和CAN控制器,而后檢查定時器0是否有置位,如果說置位了則檢測LIN節(jié)點是否有數(shù)據(jù)發(fā)出,有的話將LIN節(jié)點的發(fā)送緩沖器數(shù)據(jù)發(fā)送到網(wǎng)關(guān)的LIN接收緩沖器,然后依次將數(shù)據(jù)一層層地發(fā)送到CAN節(jié)點上,之后再檢測網(wǎng)關(guān)的CAN接收緩沖器,如果有數(shù)據(jù)則發(fā)送到網(wǎng)關(guān)的LIN發(fā)送緩沖器,網(wǎng)管的LIN發(fā)送緩沖器有數(shù)據(jù),此時將這個數(shù)據(jù)發(fā)到LIN節(jié)點上。具體的邏輯結(jié)構(gòu)如下圖所示。
為了驗證算法的可行性和程序的正確性以及網(wǎng)關(guān)性能,完成了一個測試系統(tǒng)在測試系統(tǒng)中,由控制臺、CAN節(jié)點1、LIN節(jié)點1和LIN節(jié)點2組成,其中控制臺連接到CAN總線,它既是CAN總線上的節(jié)點同時也是測試系統(tǒng)的控制臺。由控制臺可對其它三個節(jié)點進(jìn)行通信,而其它三個節(jié)點又可通過故障開關(guān)對控制臺進(jìn)行通訊,可通過各節(jié)點上的指示燈來獲知數(shù)據(jù)的發(fā)送也接收。上圖為測試系統(tǒng),下圖為測試網(wǎng)關(guān)。
在CAN/LIN網(wǎng)關(guān)中,實時性是評估系統(tǒng)的重要性能數(shù)據(jù),可以通過數(shù)據(jù)發(fā)送也接收的時間差異來判斷系統(tǒng)實現(xiàn)的好壞。為了評估此系統(tǒng)的實時性,在不同LIN波特率(Kbps)和CAN波特率(Kbps)測試延時時間。
延時時間(m s)L I N波特率( 2 . 4 4 . 8 9 . 6 1 4 . 4 1 9 . 2 1 0 0 5 6 4 8 4 0 3 1 2 1 2 5 0 5 6 4 7 3 9 3 0 2 1 1 0 2 4 5 3 4 5 3 8 2 7 1 9
從上表數(shù)據(jù)可以看出,高速總線CAN的波特率提升對于延時時間的減小影響較小,而通過對低速總線LIN波特率的提升對于延時時間的減小效果較為明顯。所以說 LIN波特率是延時時間的主要因素,CAN波特率是延時時間的次要因素。在對實時性要求不高的場合,可通過提高LIN波特率來達(dá)到較小延時時間的目的,而對實時性要求較高的場合,可通過同時提高LIN波特率和CAN波特率來減小延時時間。
基于MCS-51單片機(jī)的CAN/LIN網(wǎng)關(guān)設(shè)計有效地解決了CAN總線與LIN總線的相互數(shù)據(jù)傳輸問題,并且采用分時向各節(jié)點發(fā)起通訊的方法具有程序結(jié)構(gòu)清晰、程序移植性好、通用性好、成本低廉等優(yōu)勢。利用MCS-51單片機(jī)實現(xiàn)的CAN/LIN網(wǎng)關(guān)設(shè)計也存在一定的局限性,在硬件電路的集成度方面還存在不足,有待今后進(jìn)一步改善。
[1]崔俊鋒,袁濤.車身混合網(wǎng)絡(luò)中CAN/LIN網(wǎng)關(guān)的設(shè)計與實現(xiàn)[J].微計算機(jī)信息,2006,22(3).
[2]王豐華.汽車上CAN/LIN混合網(wǎng)絡(luò)組網(wǎng)技術(shù)的應(yīng)用研究[D].鎮(zhèn)江:江蘇大學(xué),2006.
[3]甘永梅,李慶豐等.現(xiàn)場總線技術(shù)及其應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2005.
[4]饒運(yùn)濤,鄒繼軍等.現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2004.
[5]張毅剛.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2007.
(責(zé)任編輯:王 林)
CAN/LIN Gateway Based on the MCS-51
LV Jin-chao,YE Jiu-lin,LI Shi-chao
(Schoolof Micro-Electronics andSolid-StateElectronics,University of Electronic Science andTechnology ofChina,Chengdu 610054,China)
The CANbus and LINbus have been large-scalely applied in automobile industry.Howto effectively solve the transformation between the CAN bus and LIN bus has become a problem,and this article,based on MCS-51,provides an effective solution,using MCS-51 timer timing function,timing on each node communication,to achieve the purpose of realization of data transmission.
MCS-51;CAN bus;LIN bus;gateway
TN915
A
1009-3583(2014)-0079-03
2014-05-06
呂晉超,男,貴州貴陽人,大學(xué)本科生,主要從事CAN總線技術(shù)的應(yīng)用和系統(tǒng)設(shè)計的研究。