0 引言
CAN-bus(Controller Area Network)即控制" title="控制">控制器局域網(wǎng)是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。最初CAN-bus被設(shè)計(jì)作為汽車環(huán)境中的微控制器通訊工具,,用于在車載各電子控制裝置ECU之間交換信息,,從而形成汽車電子控制網(wǎng)絡(luò),。如今,CAN-bus作為一種技術(shù)先進(jìn),、可靠性高,、功能完善、成本合理的遠(yuǎn)程網(wǎng)絡(luò)通訊控制方式,已被廣泛應(yīng)用到各個(gè)自動(dòng)化控制系統(tǒng)中,。而且CAN-bus總線在通信能力,、可靠性、實(shí)時(shí)性,、靈活性,、易用性、傳輸距離等方面較RS-485總線有著明顯的優(yōu)勢(shì),。因而用CAN總線" title="CAN總線">CAN總線取代RS-485總線將是大勢(shì)所趨,。
1 CAN總線的主要特性
CAN總線與其它通信網(wǎng)的不同之處有二:一是報(bào)文傳送中不包含目標(biāo)地址,它是以全網(wǎng)廣播為基礎(chǔ),,各接收站根據(jù)報(bào)文中反映數(shù)據(jù)性質(zhì)的標(biāo)識(shí)符來(lái)過(guò)濾報(bào)文,,該收的收下,不該收的棄而不用,。其好處是可在線上網(wǎng)下網(wǎng),、即插即用和多站接收;二是特別強(qiáng)化數(shù)據(jù)安全,,可滿足控制系統(tǒng)及其它較高數(shù)據(jù)要求的系統(tǒng)需求,。CAN具有以下主要技術(shù)特性:
(1)CAN遵從ISO模型,采用了其中的物理層,、數(shù)據(jù)鏈路層與應(yīng)用層,。采用雙絞線,通信速率最高可達(dá)到1 Mbps/40 m,,直接傳輸距離最遠(yuǎn)可達(dá)10 kin/5 kbps,。同一段總線內(nèi)最多可掛接110個(gè)設(shè)備。
(2)CAN的信號(hào)傳輸采用短幀結(jié)構(gòu),,每一幀有效字節(jié)數(shù)為8個(gè),。因而傳輸時(shí)間短,受干擾的概率低,。當(dāng)節(jié)點(diǎn)發(fā)生嚴(yán)重錯(cuò)誤時(shí),,CAN可自動(dòng)關(guān)閉該節(jié)點(diǎn),同時(shí)切斷與總線的聯(lián)系,,以使總線上其它節(jié)點(diǎn)不受影響,,因此CAN總線具有很強(qiáng)的抗干擾能力。
(3)CAN可支持多主工作方式,,網(wǎng)絡(luò)上任一節(jié)點(diǎn)在任何時(shí)候均可主動(dòng)向其它節(jié)點(diǎn)發(fā)送信息,,同時(shí)也支持點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)和全局廣播方式來(lái)接收/發(fā)送數(shù)據(jù),。處于優(yōu)先級(jí)低的節(jié)點(diǎn)會(huì)主動(dòng)停止發(fā)送,,以此來(lái)避免總線沖突,。
2 CAN總線接口硬件電路的設(shè)計(jì)
硬件電路的設(shè)計(jì)主要是CAN通信控制器與微處理器之間和CAN總線收發(fā)器與物理總線之間的接口電路的設(shè)計(jì)。CAN通信控制器是CAN總線接口電路的核心,,主要完成CAN的通信協(xié)議,,而CAN總線收發(fā)器的主要功能是增大通信距離,提高系統(tǒng)的瞬間抗干擾能力,,保護(hù)總線,,降低射頻干擾(RFI),實(shí)現(xiàn)熱防護(hù)等,。
2.1 CAN總線接口電路
SJA1000" title="SJA1000">SJA1000硬件接口原理圖如圖l所示,。圖中,CAN總線控制器SJA1000的ADO-AD7連接到AT89C51的P0口,。片選端CS取反后連接到AT89C51的P2.7,,當(dāng)P2.7為1時(shí),CPU片外存儲(chǔ)器地址可選中SJA1000,。CPU通過(guò)這些地址可對(duì)SJA1000執(zhí)行相應(yīng)的讀/寫(xiě)操作(即:SJA1000首地址為8000H),。SJA1000的RD、WR,、ALE分別與AT89C51的對(duì)應(yīng)引腳相連,。由于SJA1000是低電平復(fù)位,,而AT89C51是高電平復(fù)位,,所以兩者的復(fù)位端接法不同。另外,,當(dāng)SJA1000的11腳MODE接高電平時(shí),,可選擇Intel二分頻模式。SJA1000的16腳(INT)是中斷信號(hào)輸出端,,在中斷允許的情況下,,有中斷發(fā)生時(shí),16腳會(huì)輸出由高電平到低電平的跳變,,因此將AT89C51的外部中斷輸入腳(INT0)與該腳相連接,,即可通過(guò)中斷方式來(lái)訪問(wèn)SJA1000。為了增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力,,本設(shè)計(jì)采用SJA1000的具有光電隔離的CAN總線接口,。SJA1000的發(fā)送輸出端TX0與接收輸入端RXO、RX1分別經(jīng)高速集成光電耦合器6N137隔離后,,與CAN總線接口驅(qū)動(dòng)芯片82C250的TXD和RXD相連,,82C250直接與CAN物理總線相連。CAN總線驅(qū)動(dòng)器PCA82C250是CAN控制器和物理總線之間的接口,,具有可向總線的差動(dòng)發(fā)送數(shù)據(jù)和CAN控制器的差動(dòng)接收數(shù)據(jù)的功能,。
2.2設(shè)計(jì)注意事項(xiàng)
在進(jìn)行電路設(shè)計(jì)時(shí)應(yīng)注意以下幾點(diǎn):
(1)總線兩端必須接兩個(gè)終端匹配電阻Rs,,若忽略掉它們,會(huì)使數(shù)據(jù)通信的抗干擾性及可靠性大大降低,。
(3)SJA1000的TX1腳懸空時(shí),,RX1引腳的電位必須維持在約0.5Vcc上,否則,,將不能形成CAN協(xié)議所要求的電平邏輯,。因本系統(tǒng)傳輸距離近,環(huán)境干擾小,,可以不用電流隔離,,這樣可以直接把82C250的Vref端(約為0.5 Vcc)與SJA1000的RX1相連,從而簡(jiǎn)化了電路設(shè)計(jì),。
(4)設(shè)計(jì)時(shí)將SJA1000的CLOCKOUT的時(shí)鐘信號(hào)接至AT89C51的時(shí)鐘電路輸入端,,來(lái)作為AT89C51的外部時(shí)鐘輸入,從而解決了時(shí)鐘同步問(wèn)題:同時(shí)將SJA1000中斷輸出信號(hào)/INT接至AT89C51的/INT0端,,通過(guò)中斷方式與AT89C51進(jìn)行通信,。
3系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)上電后首先對(duì)82C250和SJA1000進(jìn)行初始化。以確定工作主頻,、波特率,、輸出特性等,然后通過(guò)查詢方式獲取模數(shù)轉(zhuǎn)換采樣值,,并把該值通過(guò)SJA1000傳送到CAN總線上由上位PC機(jī)來(lái)進(jìn)行顯示控制,。而對(duì)來(lái)自CAN總線上的信息則采用中斷方式處理,系統(tǒng)每接收到一幀信息,,便產(chǎn)生一次中斷以觸發(fā)微處理器進(jìn)入中斷模式,,然后在中斷服務(wù)程序中讀取該幀信息并傳送到現(xiàn)場(chǎng)。SJA1000的初始化程序如下:
MOV DPTR,,#CR:控制寄存器CR的地址送DPTR
MOVA,,#01H
MOVX@DPTR,A:進(jìn)入復(fù)位模式
MOV DPTR,,#CDR
MOVA,,#00H
MOVX@DPTR,A:選擇BASIC CAN模式,、時(shí)鐘不輸出
MOV A,,#NODECODE
MOVX @DPTR,A,;節(jié)點(diǎn)號(hào)NODECODE寫(xiě)入ACR
MOVX DPTR,,#AMR
MOV A,#00H
MOV @DPTR,,A,;AMR置為0,,當(dāng)且僅當(dāng)RXID0=ACR時(shí)接收數(shù)據(jù)
MOV DPTR,#BTR0,;設(shè)定總線時(shí)序寄存器BTR0,,系統(tǒng)采用12 MHz晶振
MOV A,#85H,;分頻后總線時(shí)鐘頻率為2MHz
MOVX @DPTR,,A;同步跳轉(zhuǎn)寬度為3tscl
MOV DPTR,,#BTR1,;設(shè)定總線時(shí)序寄存器BTR1
MOV A,#OB4H:位同步時(shí)間為1個(gè)tsc1,,采樣開(kāi)始位置TSEG1=5tsc1
MOVX @DPTR,,A;TSEG2=4tsc1,,每一位時(shí)間10tsc1(200 kHz),,每位采樣3次
MOV DPTR,#OCR,;設(shè)置輸出控制寄存器
MOV A,,#1AH:數(shù)據(jù)從TX0按正常輸出模式同極性輸出
MOV @DPTR,A,;TX1不用
MOV DPTR,,#CR;初始化完成,,使控制器退出復(fù)位模式,,進(jìn)入工作模式工作,。
MOV A,,#06H
MOV @DPTR,A
SJA1000在經(jīng)過(guò)初始化后便開(kāi)始接收或發(fā)送數(shù)據(jù),,其程序流程分別如圖2和圖3所示,。
4結(jié)束語(yǔ)
該接口電路在經(jīng)DP-51H單片機(jī)通訊仿真實(shí)驗(yàn)儀的調(diào)試后,結(jié)果表明它能模擬實(shí)現(xiàn)通信功能,,且其抗干擾性能優(yōu)良,,通信速率較高,電路也比較簡(jiǎn)單,,是開(kāi)發(fā)與應(yīng)用其它CAN總線產(chǎn)品的基礎(chǔ),。