《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > CAN控制器芯片MCP2510在遠程監(jiān)測系統(tǒng)中的應(yīng)用

CAN控制器芯片MCP2510在遠程監(jiān)測系統(tǒng)中的應(yīng)用

2008-09-11
作者:王繼國 孫新亞

??? 摘? 要: 介紹了CAN控制器芯片" title="控制器芯片">控制器芯片MCP2510的功能、結(jié)構(gòu)和工作原理,提出了一種利用MCP2510芯片和MSP430單片機組成遠程監(jiān)測系統(tǒng)" title="遠程監(jiān)測系統(tǒng)">遠程監(jiān)測系統(tǒng)的方案,并通過硬件電路和軟件的實現(xiàn)證明了其可行性和正確性,同時列舉了MCP2510在使用中的一些注意事項。

????關(guān)鍵詞: CAN? MCP2510? SPI? 遠程監(jiān)測

?

??? 隨著各種復(fù)雜的機電一體化設(shè)備的不斷發(fā)展,需要有一種智能化程度更高、容錯性和可靠性更強的設(shè)計,使各種子系統(tǒng)通過網(wǎng)絡(luò)連接起來,以達到信息共享、減少布線、降低成本和提高總體可靠性的目的。CAN控制器局域網(wǎng)就是為了滿足這種需要而產(chǎn)生的。由于CAN控制器芯片具有卓越的性能,現(xiàn)已廣泛應(yīng)用于工業(yè)自動化、監(jiān)控系統(tǒng)、醫(yī)療儀器、紡織機械、船舶運輸、鐵路信號傳輸、自動販賣機等眾多設(shè)備以及建筑、環(huán)境控制等領(lǐng)域中。

??? 目前,我國工業(yè)上應(yīng)用最廣泛的獨立CAN控制器芯片當屬Philips公司的SJA1000。雖然它具有低成本、高可靠性、支持遠距離通信等特點,但它在應(yīng)用中也具有一些缺點,比如地址總線和數(shù)據(jù)總線的分時復(fù)用,常導致接口效率低下;接收和發(fā)送緩沖器的個數(shù)太少,導致數(shù)據(jù)吞吐率低下;幀屏蔽器和過濾器的設(shè)置不夠靈活,不能滿足同時需要更多屏蔽和過濾條件的要求等。

??? 為了簡化CAN總線接口應(yīng)用設(shè)計,同時提高CAN總線通信的穩(wěn)定性和效率,采用新型的獨立CAN控制器芯片MCP2510設(shè)計一個變電站的CAN總線遠程監(jiān)測系統(tǒng),有效地解決了以上問題。本文主要介紹MCP2510的結(jié)構(gòu)、原理及其在CAN總線遠程監(jiān)測系統(tǒng)中的應(yīng)用。

1 MCP2510簡介

??? MCP2510是Microchip公司推出的采用獨立CAN控制器的CAN總線控制器芯片,它完全符合CAN總線的2.0B技術(shù)規(guī)范,并帶有符合工業(yè)標準的SPI串行接口。MCP2510在目前市場上是體積最小、最易于使用也是最節(jié)約成本的獨立CAN控制器。將MCP2510和高性能的PIC單片機或MSP430單片機結(jié)合使用即可支持基于CAN總線的應(yīng)用。它能應(yīng)用于一些需實時控制的局域網(wǎng)場合,如汽車電器控制、樓宇防盜監(jiān)控系統(tǒng)、樓宇自動化系統(tǒng)、智能住宅小區(qū)、安防系統(tǒng)、門禁系統(tǒng)等。使用獨立的CAN控制器的潛在優(yōu)勢,系統(tǒng)設(shè)計人員可以大大擴大單片機的選擇范圍而不必強求單片機必須內(nèi)含CAN總線控制模塊,對軟件稍作修改后就可以通過SPI接口和MCP2510交換數(shù)據(jù)。這樣,不需要更換單片機就可以在現(xiàn)有的系統(tǒng)上增加CAN總線的通信功能,使得幾乎任何單片機接入CAN總線都成為可能,系統(tǒng)開發(fā)人員可以從更多種類的單片機中選擇最合理、最理想的方案,從而達到了產(chǎn)品的快速更新、縮短上市時間、提高產(chǎn)品質(zhì)量的目的。MCP2510能夠發(fā)送和接收標準數(shù)據(jù)幀以及擴展數(shù)據(jù)幀,并具有接收過濾功能和信息管理的功能。MCP2510通過其SI引腳同單片機進行數(shù)據(jù)傳輸,最高數(shù)據(jù)傳輸速率" title="傳輸速率">傳輸速率可達1Mbps。單片機可以通過MCP2510與CAN總線上的其它單片機進行通信。MCP2510內(nèi)含3個發(fā)送緩沖器,2個接收緩沖器,并且具有靈活的中斷能力、幀屏蔽和過濾、幀優(yōu)先級設(shè)定等特性。這些特點使得單片機對于CAN總線的操作變得非常簡單。

??? MCP2510的主要功能如下:

??? ·支持CAN協(xié)議2.0A/2.0B

??? ·最大可編程波特率為1Mbps

??? ·有標準幀和擴展幀兩種數(shù)據(jù)幀可供選擇,每個幀中的數(shù)據(jù)段長為0-8字節(jié)

??? ·支持遠程幀

??? ·內(nèi)含3個發(fā)送緩沖器和2個接收緩沖器,并且其優(yōu)先級可編程設(shè)定

??? ·內(nèi)含6個接收過濾器和2個接收過濾屏蔽器

??? ·具有Loop-Back(自環(huán)檢測)模式

??? MCP2510的主要電氣特性如下:

??? ·工作電壓:2.7V-5.5V

??? ·具有低功耗睡眠狀態(tài)

??? ·工作電流:5mA(待機電流在5.5V下為10μA/5.5V)

??? ·工作溫度:I(-40℃-+85℃)、E(-40℃-+125℃)

??? ·具有高速SPI接口(5MHz/4.5V)

??? ·支持SPI 0.0和SPI 1.1兩種模式

??? ·具有6個中斷接口

??? ·具有可編程分頻系數(shù)的時鐘脈沖輸出引腳

??? ·具有可選擇使能的中斷輸出引腳

??? ·Buffer Full(接收緩沖器滿)輸出引腳可配置為中斷輸出端或普通數(shù)字輸出端

??? ·Request To Send(請求發(fā)送輸入)引腳可配置為立即發(fā)送數(shù)據(jù)命令輸入端或普通數(shù)字輸入端

2 MCP2510內(nèi)部結(jié)構(gòu)和工作原理

??? 圖1為MCP2510的內(nèi)部結(jié)構(gòu)與工作原理圖,CAN協(xié)議機主要負責與CAN總線的接口,SPI接口邏輯負責實現(xiàn)與單片機的接口,而緩沖器、過濾器和控制邏輯則負責實現(xiàn)各種工作模式的設(shè)定和操作控制。

?

?

??? MCP2510在CAN總線上的數(shù)據(jù)接收是通過兩個接收緩沖器、兩個接收屏蔽器、六個接收過濾器的組合來實現(xiàn)的。CAN總線上的幀只有同時滿足至少任意一個接收屏蔽器和一個接收過濾器的條件才可以進入接收緩沖器。單片機通過SPI接口可以讀取接收緩存器數(shù)據(jù)。MCP2510對CAN總線的數(shù)據(jù)發(fā)送則沒有限制,只要用單片機通過SPI接口將待發(fā)送的數(shù)據(jù)寫入MCP2510的發(fā)送緩存器,然后再調(diào)用RTS(發(fā)送請求)命令即可將數(shù)據(jù)發(fā)送到CAN總線上。

??? MCP2510具有靈活的中斷管理功能,它有8個中斷源,包括發(fā)送、接收中斷,各種錯誤中斷以及總線喚醒中斷等。單片機通過設(shè)置MCP2510的中斷允許控制字" title="控制字">控制字CANINTE設(shè)定和屏蔽各種中斷發(fā)生的條件,并通過讀取MCP2510的中斷標志位控制字CANINTF判斷當前中斷的中斷源。另外,判斷當前中斷的中斷源也可以通過MCP2510的Read Status(讀狀態(tài)字)命令讀取CANSTAT控制字中的ICOD部分來完成。

3 遠程監(jiān)測系統(tǒng)的硬件實現(xiàn)

??? 本文提出的遠程監(jiān)測系統(tǒng)方案包括一個主系統(tǒng)控制器(控制臺工作站)和多個節(jié)點控制器(CAN遠程監(jiān)測節(jié)點),其中面向測控對象的節(jié)點控制器由帶有標準SPI接口的MSP430單片機和MCP2510以及CAN總線接口器件82C250構(gòu)成,如圖2所示。MSP430單片機通過SPI接口與MCP2510進行交互,將采樣并計算后的數(shù)據(jù)通過MCP2510發(fā)送到CAN總線上,以便被控制臺工作站監(jiān)控。各個節(jié)點控制器分布在不同的地理位置上,獨立地執(zhí)行一個完整的任務(wù)。在本系統(tǒng)中,節(jié)點控制器可對電動機的電流、電壓和周圍溫度進行監(jiān)測。利用CAN通信技術(shù)將所監(jiān)測的對象聯(lián)網(wǎng),使管理人員在控制臺的主監(jiān)控工作站上就可以觀察各個部分的情況,將遠程和本地系統(tǒng)構(gòu)成一個整體,便于管理和監(jiān)測。另外,由于CAN總線是基于發(fā)送報文的,它不會對CAN控制節(jié)點進行編碼,因而系統(tǒng)的可擴展性比較好;并且,增刪CAN總線上的任何一個節(jié)點控制器,不會對其它的節(jié)點控制器造成任何影響。如果需要進一步提高系統(tǒng)的穩(wěn)定性和抗干擾能力,可以在MCP2510和82C250之間再加一個光電隔離器來實現(xiàn)。

?

?

??? 圖3是此方案的節(jié)點控制器的硬件接口電路圖。

?

?

4 遠程監(jiān)測系統(tǒng)的軟件實現(xiàn)

??? 由于本方案的數(shù)據(jù)傳輸是在PC機與單片機之間進行的,并且在PC機上安裝了三興達公司的CAN適配卡,CAN適配卡通過雙絞線與CAN控制器接口器件82C250相連,所以PC機上的通信軟件是用CAN適配卡提供的驅(qū)動程序在Visual Basic下編寫的,并且CAN通信的幀封裝和解幀都嚴格遵循CAN通信最常用的Hilon A協(xié)議。編程中要注意在PC機的收發(fā)狀態(tài)轉(zhuǎn)換時,需要一定的延時。CAN總線節(jié)點要有效、實時地完成通信任務(wù),節(jié)點控制器的軟件設(shè)計是關(guān)鍵,也是難點。它主要包括節(jié)點初始化程序、報文發(fā)送程序、報文接收程序以及CAN總線出錯處理程序等。考慮到本方案硬件電路的實現(xiàn),在MSP 430和MCP2510的SPI接口數(shù)據(jù)通信方面,將MSP430設(shè)置為主模式,而將MCP2510設(shè)置為從模式。為了最大程度地保證CAN總線通信的穩(wěn)定性和快速性,將MCP2510的數(shù)據(jù)傳輸速率選為80kbps,而將MSP430的UART模塊的波特率選為2Mbps,并結(jié)合MCP2510和MSP430的SPI接口完全實現(xiàn)了Hilon A協(xié)議棧,用于CAN通信幀的封裝和解包。

??? MCP2510正常工作之前,需要進行正確地初始化,包括設(shè)置SPI接口的數(shù)據(jù)傳輸速率、CAN通信的波特率、MCP2510的接收過濾器和屏蔽器以及發(fā)送和接收中斷允許標志位等。與SJA1000不同的是,單片機對MCP2510的接收緩沖器和發(fā)送緩存器的操作必須通過SPI接口用MCP2510內(nèi)置的讀寫命令來完成。

??? 圖4是MCP2510的SPI接口讀命令的時序圖。操作時,單片機在向MCP2510提供時鐘脈沖SCK的同時,先把讀命令和要讀的首地址發(fā)送到MCP2510的SI引腳,每個數(shù)據(jù)位在SCK的上升沿被鎖存。MCP2510在接收到讀命令和首地址后,在SCK的下降沿將讀取到的數(shù)據(jù)輸出到SO引腳。在數(shù)據(jù)從SO引腳輸出的過程中,SCK至少要持續(xù)到此數(shù)據(jù)輸出過程完成為止。若單片機只向MCP2510提供可以輸出一個字節(jié)數(shù)據(jù)的SCK,就是MCP2510的單字節(jié)讀操作。若單片機連續(xù)向MCP2510提供SCK,則在MCP2510的SO引腳上將連續(xù)輸出從首地址開始的連續(xù)地址空間的數(shù)據(jù),直到單片機停止向MCP2510提供SCK為止,這就是MCP2510的連續(xù)地址序列讀操作。而單片機供給MCP2510連續(xù)SCK的實現(xiàn)方法也很簡單,就是一直向MCP2510的SI引腳輸出“0”字節(jié)即可,而每輸出一個“0”字節(jié),SO引腳上便會輸出一個字節(jié)的數(shù)據(jù)。

?

?

??? 圖5是MCP2510的SPI接口寫命令的時序圖。操作時,單片機在向MCP2510提供時鐘脈沖SCK的同時,把寫命令發(fā)送到MCP2510的SI引腳,每個數(shù)據(jù)位在SCK的上升沿被鎖存。然后再發(fā)送首地址和數(shù)據(jù)。和讀命令相似,如果單片機只提供可以寫入單字節(jié)的SCK,就是MCP2510的單字節(jié)寫操作。如果單片機提供連續(xù)的SCK,那么跟在首地址后面的數(shù)據(jù)將被連續(xù)寫入從首地址開始的連續(xù)地址空間,這就是MCP2510的連續(xù)地址序列寫操作。

?

?

??? 在程序設(shè)計中,對發(fā)送和接收緩存器的讀寫主要使用了連續(xù)地址序列讀寫操作" title="讀寫操作">讀寫操作,因為這樣可以避免反復(fù)地發(fā)送讀寫命令和地址,大大提高了程序運行效率。

??? 除讀寫操作外,MCP2510還具有BitModify(位修改)、RESET(復(fù)位)和Request To Send(請求發(fā)送)等操作,其時序與讀寫操作差別不大。

??? 另外,在節(jié)點控制器的軟件實現(xiàn)中需要注意以下幾點:

??? (1)MCP2510的Bit Timming(位定時)要按照以下原則設(shè)定,否則將會造成MCP2510無法與MSP430進行正常通信。

??? ·TQ= 2* (Baud Rate + 1)*TOSC

??? ·Nominal Bit Time = TQ * (Sync Seg + Prop Seg + Phase Seg1 + Phase Seg2)

??? ·Prop Seg + Phase Seg1 >= Phase Seg2

??? ·Prop Seg + Phase Seg1 >= TDELAY

??? ·Phase Seg2 > Sync Jump Width

??? 在此程序中,TOSC為0.125μs,將Baud Rate取值為4,則Normal Bit Time為10 TQ。按照以上幾條原則取Sync Seg為TQ、Prop Seg為2TQ、Phase Seg1為3TQ、Phase Seg2為4TQ、Sync Jump Width為3TQ、SAM為3。經(jīng)實際測試,以上參數(shù)可以保證正常的CAN總線通信。

??? (2)因為MCP2510在初始化完成后默認處于Configuration(配置)模式下,所以就需要在MCP2510的初始化完成后將其置為Normal(正常)模式,否則MCP2510將一直停留在Configuration模式下,不能進行正常工作。將MCP2510置為Normal模式可通過使用MCP2510內(nèi)置的BitModify(位修改)指令向CANCTRL控制字寫入一個“0”字節(jié)來實現(xiàn)。

??? (3)在進行MCP2510的“讀”操作時,發(fā)送完“讀”指令及其地址碼之后,仍然需要向MCP2510提供時鐘,以接收“讀”到的數(shù)據(jù)。這可以通過向MCP2510發(fā)送一個“0”字節(jié)來實現(xiàn)。

??? (4)在對MCP2510做完任意操作后,都要延時一段時間,使其有足夠的時間來準備接收下次操作的命令,防止出現(xiàn)MCP2510“忙”的情況。

??? (5)在對MCP2510做任何操作之前,都要由單片機向MCP2510的片選端CS輸出一個低電平,使MCP2510被選通。

??? (6)MSP430的UART模塊要選用同步SPI通信模式,以保證和MCP2510的通信是通過SPI接口進行的。這可以通過將MSP430的控制字UCTL中的SYNC位置位來實現(xiàn)。

??? (7)在第一次向MSP430的TXBUF控制字寫入待發(fā)送的數(shù)據(jù)之前,MSP430的發(fā)送中斷允許標志位(IE2中的UTXIE1)應(yīng)該處于復(fù)位狀態(tài),這樣可以防止還沒有發(fā)送任何數(shù)據(jù)就直接進入發(fā)送中斷服務(wù)程序,造成通信無法正常進行的情況。

??? (8)在MSP430的接收中斷服務(wù)程序中,要先處理完接收到的幀,再清除接收中斷標志位。因為如果在還沒有把當前的幀數(shù)據(jù)處理完的情況下就清除了接收中斷標志位,會造成立即開始接收新的幀數(shù)據(jù),這樣就很可能會造成當前的幀數(shù)據(jù)在尚未被處理完畢時被新的幀覆蓋。

??? 以上介紹了CAN控制器芯片MCP2510,提出了一個利用MCP2510和MSP430單片機組成遠程監(jiān)測系統(tǒng)的方案,并結(jié)合硬件電路和軟件的實現(xiàn)對其可行性和正確性進行了證明。隨著CAN總線技術(shù)的進一步推廣應(yīng)用,基于CAN總線的控制系統(tǒng)將會有廣闊的應(yīng)用前景,而MCP2510芯片也將在越來越多的領(lǐng)域中得到廣泛應(yīng)用。

參考文獻

1 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計.北京:北京航空航天大學出版社,1996

2 胡大可. MSP430系列Flash型超低功耗16位單片機.北京:北京航空航天大學出版社,2001

3 Stand-Alone CAN Controller with SPI Interface.Microchip公司,2002 http://www.microchip.com/download/lit/pline/analog/interfce/can/21291e.pdf

4 Controller Area Network (CAN) Basics.Microchip公司,1999http://www.microchip.com/download/appnote/analog/can/00713a.pdf

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