《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 基于CAN控制器的對等式單片機(jī)多機(jī)系統(tǒng)的通信

基于CAN控制器的對等式單片機(jī)多機(jī)系統(tǒng)的通信

2009-04-16
作者:周寶龍 岳繼光 蕭蘊(yùn)詩

  摘? 要: 針對單片機(jī)多機(jī)系統(tǒng)主從式通信的缺點(diǎn),提出了利用CAN控制器實(shí)現(xiàn)單片機(jī)多機(jī)系統(tǒng)對等式通信,并對其硬件組成原理、通信程序的設(shè)計(jì)做了詳細(xì)的分析。

  關(guān)鍵詞: 單片機(jī)多機(jī)系統(tǒng)? “對等式”通信? 控制器局域網(wǎng)(CAN)

?

  關(guān)于單片機(jī)的多機(jī)通信,許多文章及相關(guān)書籍都有介紹,但就其多機(jī)通信的方式而言大多為“主從式”,這一通信方式限制了單片機(jī)功能的發(fā)揮及廣泛應(yīng)用。雖然文獻(xiàn)[1]利用巧秒的硬件手段實(shí)現(xiàn)了單片機(jī)多機(jī)之間的“對等式”通信,但其通信方式實(shí)質(zhì)上仍是“主從式”。本文介紹了一種基于CAN控制器的單片機(jī)多機(jī)系統(tǒng),從本質(zhì)上實(shí)現(xiàn)了任意兩機(jī)之間的直接相互通信,從而克服了“主從式”多機(jī)通信的缺點(diǎn)。

1 CAN技術(shù)簡介

  CAN (Controller Area Net)即控制器局域網(wǎng),是主要用于各種過程(設(shè)備)監(jiān)測及控制的一種網(wǎng)絡(luò)。CAN最初是由德國BOSCH公司為汽車的監(jiān)測、控制系統(tǒng)而設(shè)計(jì)的。由于CAN具有卓越的特性和極高的可靠性,特別適合于工業(yè)過程中監(jiān)控設(shè)備的互連,因此,越來越受到工業(yè)界的重視。具體來講,CAN具有如下特性:

  (1)CAN可以多主方式工作,網(wǎng)絡(luò)上任意一個(gè)節(jié)點(diǎn)均可以在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上的其他節(jié)點(diǎn)發(fā)送信息,而不分主從,通信方式靈活;

  (2)CAN可以點(diǎn)對點(diǎn)、點(diǎn)對多點(diǎn)(成組)及全局廣播方式傳送接收數(shù)據(jù);

  (3)CAN網(wǎng)絡(luò)上的節(jié)點(diǎn)信息可分成不同的優(yōu)先級,可以滿足不同的實(shí)時(shí)要求;

  (4)CAN采用非破壞性總線仲裁技術(shù)。當(dāng)兩個(gè)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)上發(fā)送數(shù)據(jù)時(shí),優(yōu)先級低的節(jié)點(diǎn)主動(dòng)停止數(shù)據(jù)發(fā)送,而優(yōu)先級高的節(jié)點(diǎn)可不受影響地繼續(xù)傳輸數(shù)據(jù),大大地節(jié)省了總線仲裁沖突時(shí)間,在網(wǎng)絡(luò)負(fù)載很重的情況下也不會出現(xiàn)網(wǎng)絡(luò)癱瘓;

  (5)CAN的直接通信距離最大可達(dá)10km(速率小于5kbps),最高通信速率可達(dá)1Mbps(此時(shí)距離最長為40m)。

2 基于CAN控制器的對等式單片機(jī)多機(jī)系統(tǒng)軟硬件設(shè)計(jì)

2.1 系統(tǒng)硬件設(shè)計(jì)

2.1.1 系統(tǒng)組成原理及通信過程

  所謂對等式通信,就是單片機(jī)多機(jī)系統(tǒng)中任一節(jié)點(diǎn)均可主動(dòng)地與其它節(jié)點(diǎn)直接交換數(shù)據(jù),而無須經(jīng)過第三方。從此角度出發(fā),我們設(shè)計(jì)的基于CAN控制器的單片機(jī)多機(jī)系統(tǒng)組成如圖1所示。

?

?

  系統(tǒng)中的每個(gè)節(jié)點(diǎn)由單片機(jī)、CAN控制器、CAN收發(fā)器組成。單片機(jī)主要用于系統(tǒng)的計(jì)算及信息處理等功能;CAN控制器主要用于系統(tǒng)的通信;CAN收發(fā)器主要用于增強(qiáng)系統(tǒng)的驅(qū)動(dòng)能力。系統(tǒng)的發(fā)送過程是:單片機(jī)將外圍設(shè)備或其他節(jié)點(diǎn)傳送過來的信息處理后,按CAN規(guī)范規(guī)定的格式將其寫入CAN控制器的發(fā)送緩沖區(qū),并啟動(dòng)發(fā)送命令,把數(shù)據(jù)發(fā)送到CAN總線上;接收過程是:CAN控制器從CAN總線上自動(dòng)接收數(shù)據(jù),并經(jīng)過濾后存入CAN接收緩沖區(qū),且向單片機(jī)發(fā)出中斷請求,此時(shí)單片機(jī)可從CAN接收緩沖區(qū)讀取要接收的數(shù)據(jù)。

2.1.2 系統(tǒng)節(jié)點(diǎn)硬件設(shè)計(jì)舉例

  圖2是所研制的低成本農(nóng)業(yè)溫室控制系統(tǒng)中與本文相關(guān)部分的硬件電路圖。

?

?

  設(shè)計(jì)時(shí)應(yīng)注意以下幾點(diǎn):

  (1)總線兩端各有一個(gè)120Ω的電阻,對于匹配總線阻抗起著相當(dāng)重要的作用。否則,數(shù)據(jù)通信的抗干擾性及可靠性大大降低,甚至無法通信。

  (2)為了CAN與單片機(jī)之間時(shí)序的同步,一般采用CAN控制器給單片機(jī)提供時(shí)鐘信號,此時(shí)時(shí)鐘信號對CHMOS型單片機(jī)應(yīng)接XTALI引腳,對HMOS型單片機(jī)應(yīng)接XTAL2引腳。

  (3)若CAN收發(fā)緩沖器用集成元器件,則RX1腳應(yīng)接地,且CDR寄存器中的CBP位應(yīng)置邏輯1。否則,RX1引腳電位必需維持在2.5V以上,且CDR寄存器中的CBP位應(yīng)置邏輯0,以形成CAN要求的邏輯電平。

2.2 系統(tǒng)軟件設(shè)計(jì)

  系統(tǒng)軟件設(shè)計(jì)的關(guān)鍵是通信程序的設(shè)計(jì)。通信軟件由三部分組成:初始化程序、發(fā)送程序、接收程序。由于系統(tǒng)中任意一節(jié)點(diǎn)在任意時(shí)刻均可主動(dòng)與其它節(jié)點(diǎn)通信,所以,各節(jié)點(diǎn)的通信程序相同。

2.2.1 初始化程序

  初始化程序主要是通過對CAN控制器控制段中的寄存器寫入控制字從而確定CAN控制器的工作方式等。有三種方式進(jìn)入初始化程序:一是上電復(fù)位;二是硬件復(fù)位;三是軟件復(fù)位,即運(yùn)行期間通過給CAN控制器發(fā)一個(gè)復(fù)位請求,置復(fù)位請求位為1。在復(fù)位期間,必需初始化的寄存器有:MR(PeliCAN模式)模式寄存器、CDR時(shí)分寄存器、ACR接收代碼寄存器、MAR屏蔽寄存器、BTR總線定時(shí)寄存器、OCR輸出控制寄存器等。需要注意的是,這些寄存器僅能在復(fù)位期間可寫訪問。因此,在對這些寄存器初始化前,必須確保系統(tǒng)進(jìn)入了復(fù)位狀態(tài)。初始化程序的流程圖如圖3所示。

?

?

2.2.2 發(fā)送程序

  信息從CAN控制器發(fā)送到CAN總線是由CAN控制器自動(dòng)完成的。發(fā)送程序只需把被發(fā)送的信息幀送到CAN的發(fā)送緩沖區(qū),且啟動(dòng)發(fā)送命令即可。發(fā)送程序可采用查詢方式或中斷方式。由于查詢方式比較簡單,這里僅討論中斷方式發(fā)送程序的設(shè)計(jì)。對于中斷方式,發(fā)送程序分為兩部分:一是主程序;二是中斷服務(wù)程序。主程序主要用于控制信息的發(fā)送及當(dāng)發(fā)送緩沖區(qū)滿時(shí),把要發(fā)送的信息暫存到臨時(shí)存儲區(qū);中斷發(fā)送程序負(fù)責(zé)把臨時(shí)存儲區(qū)中的暫存信息發(fā)送出去。兩者的流程圖分別見圖4、圖5。

?

?

2.2.3 接收程序

  信息從CAN總線到CAN接收緩沖區(qū)是由CAN控制器自動(dòng)完成的。接收程序只需從接收緩沖區(qū)讀取要接收的信息即可。接收程序也可采用查詢方式或中斷方式,兩者的繁簡程度相當(dāng),此處以查詢方式為例給出接收程序的流程圖(見圖6)。

?

?

  以上給出的流程圖均為一般性流程圖。在使用時(shí)應(yīng)結(jié)合實(shí)際項(xiàng)目具體化,并且發(fā)送程序中可能會有應(yīng)急處理,接收程序中會有數(shù)據(jù)過載情況。限于篇幅,此處不予以討論。

  基于CAN控制器的單片機(jī)多機(jī)通信系統(tǒng),由于其通信效率高、抗干擾性強(qiáng)、傳輸距離較遠(yuǎn),適合于中小型分布式控制系統(tǒng),且由于其價(jià)格低廉,在低成本自動(dòng)化領(lǐng)域有著廣泛的應(yīng)用空間。

?

參考文獻(xiàn)

1 彭宗乾.MCS-51單片機(jī)多機(jī)通信的組成原理及通信程序.電子技術(shù)應(yīng)用,1992;(18)4

2 SJA1000 Stand-alone CAN controller Application Note?Philips Semiconductor.1997

3 陽憲惠.現(xiàn)場總線技術(shù)及其應(yīng)用.北京:清華大學(xué)出版社,1999.6

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