《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 基于凌陽(yáng)單片機(jī)的CAN總線智能節(jié)點(diǎn)的開(kāi)發(fā)

基于凌陽(yáng)單片機(jī)的CAN總線智能節(jié)點(diǎn)的開(kāi)發(fā)

2009-06-05
作者:吳 杰, 詹習(xí)生, 劉金華,

  摘 要: 以凌陽(yáng)SPCE061A處理器和CAN總線控制器SJA1000為核心,設(shè)計(jì)了一種通用的CAN總線智能節(jié)點(diǎn)。給出了CAN總線智能節(jié)點(diǎn)的整體結(jié)構(gòu),重點(diǎn)闡述了它的軟硬件設(shè)計(jì)、實(shí)現(xiàn)與注意事項(xiàng)。試驗(yàn)表明:該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、可靠性高、應(yīng)用靈活,且易擴(kuò)展,具有廣泛的應(yīng)用前景。
  關(guān)鍵詞: 凌陽(yáng)單片機(jī); CAN總線; 智能節(jié)點(diǎn); SJA1000

?

  隨著計(jì)算機(jī)科學(xué)的發(fā)展,以其為核心的4C 技術(shù)(計(jì)算機(jī)技術(shù)、自動(dòng)控制技術(shù)、通信技術(shù)、CRT 顯示技術(shù))越來(lái)越深入地應(yīng)用到工業(yè)生產(chǎn)的各個(gè)環(huán)節(jié),并引起了自動(dòng)化系統(tǒng)結(jié)構(gòu)的優(yōu)化和變革, 逐步形成了以網(wǎng)絡(luò)集成自動(dòng)化為基礎(chǔ)的控制系統(tǒng)。現(xiàn)場(chǎng)總線就是順應(yīng)這一趨勢(shì)發(fā)展起來(lái)的??刂破骶钟蚓W(wǎng)CAN(Controller Aera Network) 屬于現(xiàn)場(chǎng)總線的范疇[1]。由于CAN總線具有較強(qiáng)的抗干擾能力、通信中沒(méi)有地址的概念及節(jié)點(diǎn)數(shù)不受限制等優(yōu)點(diǎn),已經(jīng)被廣泛應(yīng)用于汽車(chē)、儀器儀表、現(xiàn)場(chǎng)總線控制等領(lǐng)域。CAN總線的智能節(jié)點(diǎn)是由微處理器和可編程的CAN控制芯片組成,它們有合二為一的,如PHILIPS公司的P8XC592、MOTOROLA公司的68HC05X4等,也有由獨(dú)立的通信控制芯片與單片機(jī)接口構(gòu)成的。由于前者設(shè)計(jì)時(shí)需專(zhuān)用的開(kāi)發(fā)工具,而且價(jià)格相對(duì)較高,而后者可以采用通用的單片機(jī)仿真器,在設(shè)計(jì)時(shí)更為靈活,變化也更多,因此,本文以凌陽(yáng)SPCE061A處理器和CAN總線控制器SJA1000為核心,設(shè)計(jì)了一種通用的CAN總線智能節(jié)點(diǎn)。該智能節(jié)點(diǎn)利用凌陽(yáng)公司的61板仿真器進(jìn)行調(diào)試,能模擬實(shí)現(xiàn)通信功能,在此基礎(chǔ)上構(gòu)建CAN總線控制系統(tǒng)具有實(shí)際意義,同時(shí)針對(duì)不同的控制系統(tǒng),只要在軟件上作相應(yīng)的改動(dòng),就可以滿足控制系統(tǒng)的要求。該設(shè)計(jì)作為CAN總線節(jié)點(diǎn)的一個(gè)模塊,能夠和儀器儀表等設(shè)備相結(jié)合,使其具有網(wǎng)絡(luò)通信的能力,有著廣闊的應(yīng)用前景。
1 CAN 智能節(jié)點(diǎn)的系統(tǒng)構(gòu)成
  由于CAN 總線采用多自主方式工作, 可掛多達(dá)110個(gè)節(jié)點(diǎn)??刂葡到y(tǒng)的構(gòu)成由計(jì)算機(jī)和智能節(jié)點(diǎn)組成。如圖1所示,與DCS控制系統(tǒng)不一樣的是它的拓?fù)浣Y(jié)構(gòu)。不是所有的下位機(jī)都以上位機(jī)為中心,而是所有的節(jié)點(diǎn)(包括上位計(jì)算機(jī))都以“平等主體”的形式掛接在總線上。智能節(jié)點(diǎn)能夠采集現(xiàn)場(chǎng)數(shù)據(jù), 并根據(jù)接收到的命令或者主動(dòng)將數(shù)據(jù)發(fā)送到CAN總線。可以通過(guò)事先設(shè)置驗(yàn)收碼和驗(yàn)收屏蔽碼控制智能節(jié)點(diǎn)從總線上接收哪些數(shù)據(jù)或命令。如果某些數(shù)據(jù)需要進(jìn)一步復(fù)雜的處理,則上位計(jì)算機(jī)可以從總線上接收數(shù)據(jù)。當(dāng)上位機(jī)需要對(duì)某個(gè)節(jié)點(diǎn)施加控制動(dòng)作時(shí), 可以采用點(diǎn)對(duì)點(diǎn)方式與該節(jié)點(diǎn)通信;而當(dāng)它需要同時(shí)對(duì)所有節(jié)點(diǎn)施加控制動(dòng)作時(shí),可以采用廣播方式將命令發(fā)送到總線。這樣當(dāng)系統(tǒng)正常運(yùn)行時(shí)完全可以沒(méi)有上位機(jī)的參與,大大減少了數(shù)據(jù)的傳輸量,同時(shí)提高了系統(tǒng)的實(shí)時(shí)性和可靠性。本文以開(kāi)發(fā)設(shè)計(jì)CAN 總線智能節(jié)點(diǎn)為重點(diǎn)。

?


2 智能節(jié)點(diǎn)的硬件設(shè)計(jì)
  本文CAN 總線智能節(jié)點(diǎn)采用凌陽(yáng)公司的SPCE061A單片機(jī)作為CAN 智能節(jié)點(diǎn)的微處理器。SPCE061A是凌陽(yáng)公司推出的一款16位單片機(jī),內(nèi)嵌32 KB Flash,其核心具有較高的處理速度,能夠更容易、更快速地處理復(fù)雜的數(shù)字信號(hào)[2]。CAN 控制器采用PHILIPS公司生產(chǎn)的SJA1000,它是集成的獨(dú)立CAN 控制器(與PHILIPS早期的CAN控制器PCA82C200完全兼容),負(fù)責(zé)完成CAN 總線通信協(xié)議的物理層和數(shù)據(jù)鏈路層的功能[3]。CAN驅(qū)動(dòng)器采用的是TJA1040,它提供了CAN控制器與物理總線之間的接口以及對(duì)CAN總線的差動(dòng)發(fā)送和接收功能,可以向下兼容PCA82C250/251,并可以在很多已有的PCA82C250/251應(yīng)用中使用,而對(duì)硬件和軟件不需要做任何修改。
  CAN智能節(jié)點(diǎn)的電路原理圖如圖2所示。雖然整個(gè)電路比較簡(jiǎn)單,但結(jié)合本文設(shè)計(jì)、現(xiàn)場(chǎng)調(diào)試的體會(huì),給出下面幾點(diǎn)說(shuō)明:
  (1)SJA1000的片選、讀、寫(xiě)、復(fù)位、中斷、鎖存引腳由SPCE061A的IOA2~I(xiàn)OA7口來(lái)控制,因?yàn)镾PCE061A的IOA0~I(xiàn)OA7用做輸入口時(shí)具有喚醒功能(即輸入電平變化引起CPU中斷),能降低功耗。
  (2)SJA1000并沒(méi)有和單片機(jī)共用復(fù)位電路,而是通過(guò)SPCE061A的IOA2口來(lái)控制,這樣,SJA1000的復(fù)位就可以方便地由單片機(jī)通過(guò)軟件來(lái)控制。
  (3)SJA1000的地址/數(shù)據(jù)端和單片機(jī)的P0口相連時(shí),不需要再加鎖存器,因?yàn)樗鼉?nèi)部已經(jīng)有地址/鎖存功能[4]。
  (4)SJA1000的TX1腳懸空,RX1引腳的電位必須維持在約0.5 V以上,否則將不能形成CAN協(xié)議所要求的邏輯電平。
  (5)總線上電阻R1、R2一定不能省略,它們對(duì)匹配總線阻抗起著相當(dāng)重要的作用,如果去掉它們[5],系統(tǒng)通信的可靠性和抗干擾能力就會(huì)大大降低,甚至不能正常工作。

?

3 CAN智能節(jié)點(diǎn)的軟件設(shè)計(jì)
  CAN 智能節(jié)點(diǎn)的軟件設(shè)計(jì)大體可以分為兩部分:一部分為初始化,其中包括單片機(jī)SPCE061A的初始化和CAN 控制器SJA1000的初始化; 另一部分為節(jié)點(diǎn)實(shí)際要完成的數(shù)據(jù)采集和對(duì)執(zhí)行機(jī)構(gòu)的控制功能, 初始化以后,節(jié)點(diǎn)就可以工作。但要完成實(shí)際的任務(wù),還要設(shè)計(jì)出應(yīng)用層軟件。對(duì)于基于SPCE061A單片機(jī)的CAN總線系統(tǒng),初始化的流程基本是一致的,下面給出了SPCE061A單片機(jī)初始化程序。
  由于SPCE061A沒(méi)有專(zhuān)用的片選、讀、寫(xiě)、復(fù)位、中斷、鎖存引腳,因此須用SPCE061A編寫(xiě)出實(shí)現(xiàn)SPCE061A對(duì)SJA1000的讀寫(xiě)操作功能的函數(shù)程序,分別記做read( )write( )。
  _SP_InitRead SJA1000: ?? .PROC
  F_SP_InitRead:?(SPCE061A對(duì)SJA1000 PUSH R1 TO [SP]讀時(shí),IOA8~I(xiàn)OA15
  R1=OX00FF ????? 接地址線,設(shè)置為帶下拉電阻的輸入
?  [P_IOA_Dir]=R1??
?  [P_IOA_Attrib]=R1???????IOA2~I(xiàn)OA7接SJA1000
?  [P_IOA_Data]=R1?????????的控制線設(shè)置為同相高POP ?

??? R1 FROM [SP]??????????? 電平輸出)
????????? RETF
?????????.ENDP????????????????
??? _SP_InitWrite SJA1000:????? .PROC
??? F_SP_InitWrite: ???????????? (SPCE061A對(duì)PUSH R1?????
??? TO [SP]? SJA1000????????? 寫(xiě)時(shí),接地址IOA8-IOA15線,設(shè)置為同相高電平輸出,
??? R1=OXFFFF? IOA2-IOA7????? 接SJA1000的控制線設(shè)
??? [P_IOA_Dir]=R1??????????? 為同相高電平輸出)
??? [P_IOA_Attrib]=R1??
??? [P_IOA_Data]=R1?
??? POP R1 FROM [SP]
????? ???RETF
????? ???ENDP
??? CAN具有較強(qiáng)的糾錯(cuò)能力,適用于高噪聲環(huán)境,并具有較遠(yuǎn)的傳輸距離[6],現(xiàn)已廣泛應(yīng)用于許多領(lǐng)域,該智能節(jié)點(diǎn)利用凌陽(yáng)公司的61板仿真器進(jìn)行調(diào)試,能模擬實(shí)現(xiàn)通信功能。在此基礎(chǔ)上構(gòu)建CAN總線控制系統(tǒng)具有實(shí)際意義,但針對(duì)不同的控制系統(tǒng),在硬件和軟件上需作相應(yīng)的改動(dòng)。該設(shè)計(jì)作為CAN總線節(jié)點(diǎn)的一個(gè)模塊,能夠與儀器儀表等設(shè)備相結(jié)合,使其具有網(wǎng)絡(luò)通信的能力,有著廣闊的應(yīng)用前景。

參考文獻(xiàn)
[1]?陽(yáng)憲惠. 現(xiàn)場(chǎng)總線技術(shù)及其應(yīng)用.北京:清華大學(xué)出版社,1998.
[2]?羅亞非.凌陽(yáng)16位單片機(jī)應(yīng)用基礎(chǔ).北京:北京航空航天大學(xué)出版社,2003.
[3]?饒運(yùn)濤.現(xiàn)場(chǎng)總線CAN原理和應(yīng)用技術(shù).北京:北京航空航天大學(xué)出版社,2002.
[4]?劉光,梁濤.CAN總線智能節(jié)點(diǎn)的設(shè)計(jì)和實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006,22(6-2):102-104.
[5]?謝立,紀(jì)榮.基于C8051F023和CAN總線的數(shù)據(jù)采集通信系統(tǒng)設(shè)計(jì)[J].測(cè)控技術(shù),2006,25(5):71-74.
[6]?張?jiān)浦?,吳成東.基于CAN總線的分布式消防報(bào)警系統(tǒng)[J].控制工程,2007,14(3):307-309.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。