??? 摘? 要: 介紹了CAN控制器芯片" title="控制器芯片">控制器芯片MCP2510的功能、結構和工作原理,提出了一種利用MCP2510芯片和MSP430單片機組成遠程監測系統" title="遠程監測系統">遠程監測系統的方案,并通過硬件電路和軟件的實現證明了其可行性和正確性,同時列舉了MCP2510在使用中的一些注意事項。
????關鍵詞: CAN? MCP2510? SPI? 遠程監測
?
??? 隨著各種復雜的機電一體化設備的不斷發展,需要有一種智能化程度更高、容錯性和可靠性更強的設計,使各種子系統通過網絡連接起來,以達到信息共享、減少布線、降低成本和提高總體可靠性的目的。CAN控制器局域網就是為了滿足這種需要而產生的。由于CAN控制器芯片具有卓越的性能,現已廣泛應用于工業自動化、監控系統、醫療儀器、紡織機械、船舶運輸、鐵路信號傳輸、自動販賣機等眾多設備以及建筑、環境控制等領域中。
??? 目前,我國工業上應用最廣泛的獨立CAN控制器芯片當屬Philips公司的SJA1000。雖然它具有低成本、高可靠性、支持遠距離通信等特點,但它在應用中也具有一些缺點,比如地址總線和數據總線的分時復用,常導致接口效率低下;接收和發送緩沖器的個數太少,導致數據吞吐率低下;幀屏蔽器和過濾器的設置不夠靈活,不能滿足同時需要更多屏蔽和過濾條件的要求等。
??? 為了簡化CAN總線接口應用設計,同時提高CAN總線通信的穩定性和效率,采用新型的獨立CAN控制器芯片MCP2510設計一個變電站的CAN總線遠程監測系統,有效地解決了以上問題。本文主要介紹MCP2510的結構、原理及其在CAN總線遠程監測系統中的應用。
1 MCP2510簡介
??? MCP2510是Microchip公司推出的采用獨立CAN控制器的CAN總線控制器芯片,它完全符合CAN總線的2.0B技術規范,并帶有符合工業標準的SPI串行接口。MCP2510在目前市場上是體積最小、最易于使用也是最節約成本的獨立CAN控制器。將MCP2510和高性能的PIC單片機或MSP430單片機結合使用即可支持基于CAN總線的應用。它能應用于一些需實時控制的局域網場合,如汽車電器控制、樓宇防盜監控系統、樓宇自動化系統、智能住宅小區、安防系統、門禁系統等。使用獨立的CAN控制器的潛在優勢,系統設計人員可以大大擴大單片機的選擇范圍而不必強求單片機必須內含CAN總線控制模塊,對軟件稍作修改后就可以通過SPI接口和MCP2510交換數據。這樣,不需要更換單片機就可以在現有的系統上增加CAN總線的通信功能,使得幾乎任何單片機接入CAN總線都成為可能,系統開發人員可以從更多種類的單片機中選擇最合理、最理想的方案,從而達到了產品的快速更新、縮短上市時間、提高產品質量的目的。MCP2510能夠發送和接收標準數據幀以及擴展數據幀,并具有接收過濾功能和信息管理的功能。MCP2510通過其SI引腳同單片機進行數據傳輸,最高數據傳輸速率" title="傳輸速率">傳輸速率可達1Mbps。單片機可以通過MCP2510與CAN總線上的其它單片機進行通信。MCP2510內含3個發送緩沖器,2個接收緩沖器,并且具有靈活的中斷能力、幀屏蔽和過濾、幀優先級設定等特性。這些特點使得單片機對于CAN總線的操作變得非常簡單。
??? MCP2510的主要功能如下:
??? ·支持CAN協議2.0A/2.0B
??? ·最大可編程波特率為1Mbps
??? ·有標準幀和擴展幀兩種數據幀可供選擇,每個幀中的數據段長為0-8字節
??? ·支持遠程幀
??? ·內含3個發送緩沖器和2個接收緩沖器,并且其優先級可編程設定
??? ·內含6個接收過濾器和2個接收過濾屏蔽器
??? ·具有Loop-Back(自環檢測)模式
??? MCP2510的主要電氣特性如下:
??? ·工作電壓:2.7V-5.5V
??? ·具有低功耗睡眠狀態
??? ·工作電流:5mA(待機電流在5.5V下為10μA/5.5V)
??? ·工作溫度:I(-40℃-+85℃)、E(-40℃-+125℃)
??? ·具有高速SPI接口(5MHz/4.5V)
??? ·支持SPI 0.0和SPI 1.1兩種模式
??? ·具有6個中斷接口
??? ·具有可編程分頻系數的時鐘脈沖輸出引腳
??? ·具有可選擇使能的中斷輸出引腳
??? ·Buffer Full(接收緩沖器滿)輸出引腳可配置為中斷輸出端或普通數字輸出端
??? ·Request To Send(請求發送輸入)引腳可配置為立即發送數據命令輸入端或普通數字輸入端
2 MCP2510內部結構和工作原理
??? 圖1為MCP2510的內部結構與工作原理圖,CAN協議機主要負責與CAN總線的接口,SPI接口邏輯負責實現與單片機的接口,而緩沖器、過濾器和控制邏輯則負責實現各種工作模式的設定和操作控制。
?
?
??? MCP2510在CAN總線上的數據接收是通過兩個接收緩沖器、兩個接收屏蔽器、六個接收過濾器的組合來實現的。CAN總線上的幀只有同時滿足至少任意一個接收屏蔽器和一個接收過濾器的條件才可以進入接收緩沖器。單片機通過SPI接口可以讀取接收緩存器數據。MCP2510對CAN總線的數據發送則沒有限制,只要用單片機通過SPI接口將待發送的數據寫入MCP2510的發送緩存器,然后再調用RTS(發送請求)命令即可將數據發送到CAN總線上。
??? MCP2510具有靈活的中斷管理功能,它有8個中斷源,包括發送、接收中斷,各種錯誤中斷以及總線喚醒中斷等。單片機通過設置MCP2510的中斷允許控制字" title="控制字">控制字CANINTE設定和屏蔽各種中斷發生的條件,并通過讀取MCP2510的中斷標志位控制字CANINTF判斷當前中斷的中斷源。另外,判斷當前中斷的中斷源也可以通過MCP2510的Read Status(讀狀態字)命令讀取CANSTAT控制字中的ICOD部分來完成。
3 遠程監測系統的硬件實現
??? 本文提出的遠程監測系統方案包括一個主系統控制器(控制臺工作站)和多個節點控制器(CAN遠程監測節點),其中面向測控對象的節點控制器由帶有標準SPI接口的MSP430單片機和MCP2510以及CAN總線接口器件82C250構成,如圖2所示。MSP430單片機通過SPI接口與MCP2510進行交互,將采樣并計算后的數據通過MCP2510發送到CAN總線上,以便被控制臺工作站監控。各個節點控制器分布在不同的地理位置上,獨立地執行一個完整的任務。在本系統中,節點控制器可對電動機的電流、電壓和周圍溫度進行監測。利用CAN通信技術將所監測的對象聯網,使管理人員在控制臺的主監控工作站上就可以觀察各個部分的情況,將遠程和本地系統構成一個整體,便于管理和監測。另外,由于CAN總線是基于發送報文的,它不會對CAN控制節點進行編碼,因而系統的可擴展性比較好;并且,增刪CAN總線上的任何一個節點控制器,不會對其它的節點控制器造成任何影響。如果需要進一步提高系統的穩定性和抗干擾能力,可以在MCP2510和82C250之間再加一個光電隔離器來實現。
?
?
??? 圖3是此方案的節點控制器的硬件接口電路圖。
?
?
4 遠程監測系統的軟件實現
??? 由于本方案的數據傳輸是在PC機與單片機之間進行的,并且在PC機上安裝了三興達公司的CAN適配卡,CAN適配卡通過雙絞線與CAN控制器接口器件82C250相連,所以PC機上的通信軟件是用CAN適配卡提供的驅動程序在Visual Basic下編寫的,并且CAN通信的幀封裝和解幀都嚴格遵循CAN通信最常用的Hilon A協議。編程中要注意在PC機的收發狀態轉換時,需要一定的延時。CAN總線節點要有效、實時地完成通信任務,節點控制器的軟件設計是關鍵,也是難點。它主要包括節點初始化程序、報文發送程序、報文接收程序以及CAN總線出錯處理程序等。考慮到本方案硬件電路的實現,在MSP 430和MCP2510的SPI接口數據通信方面,將MSP430設置為主模式,而將MCP2510設置為從模式。為了最大程度地保證CAN總線通信的穩定性和快速性,將MCP2510的數據傳輸速率選為80kbps,而將MSP430的UART模塊的波特率選為2Mbps,并結合MCP2510和MSP430的SPI接口完全實現了Hilon A協議棧,用于CAN通信幀的封裝和解包。
??? MCP2510正常工作之前,需要進行正確地初始化,包括設置SPI接口的數據傳輸速率、CAN通信的波特率、MCP2510的接收過濾器和屏蔽器以及發送和接收中斷允許標志位等。與SJA1000不同的是,單片機對MCP2510的接收緩沖器和發送緩存器的操作必須通過SPI接口用MCP2510內置的讀寫命令來完成。
??? 圖4是MCP2510的SPI接口讀命令的時序圖。操作時,單片機在向MCP2510提供時鐘脈沖SCK的同時,先把讀命令和要讀的首地址發送到MCP2510的SI引腳,每個數據位在SCK的上升沿被鎖存。MCP2510在接收到讀命令和首地址后,在SCK的下降沿將讀取到的數據輸出到SO引腳。在數據從SO引腳輸出的過程中,SCK至少要持續到此數據輸出過程完成為止。若單片機只向MCP2510提供可以輸出一個字節數據的SCK,就是MCP2510的單字節讀操作。若單片機連續向MCP2510提供SCK,則在MCP2510的SO引腳上將連續輸出從首地址開始的連續地址空間的數據,直到單片機停止向MCP2510提供SCK為止,這就是MCP2510的連續地址序列讀操作。而單片機供給MCP2510連續SCK的實現方法也很簡單,就是一直向MCP2510的SI引腳輸出“0”字節即可,而每輸出一個“0”字節,SO引腳上便會輸出一個字節的數據。
?
?
??? 圖5是MCP2510的SPI接口寫命令的時序圖。操作時,單片機在向MCP2510提供時鐘脈沖SCK的同時,把寫命令發送到MCP2510的SI引腳,每個數據位在SCK的上升沿被鎖存。然后再發送首地址和數據。和讀命令相似,如果單片機只提供可以寫入單字節的SCK,就是MCP2510的單字節寫操作。如果單片機提供連續的SCK,那么跟在首地址后面的數據將被連續寫入從首地址開始的連續地址空間,這就是MCP2510的連續地址序列寫操作。
?
?
??? 在程序設計中,對發送和接收緩存器的讀寫主要使用了連續地址序列讀寫操作" title="讀寫操作">讀寫操作,因為這樣可以避免反復地發送讀寫命令和地址,大大提高了程序運行效率。
??? 除讀寫操作外,MCP2510還具有BitModify(位修改)、RESET(復位)和Request To Send(請求發送)等操作,其時序與讀寫操作差別不大。
??? 另外,在節點控制器的軟件實現中需要注意以下幾點:
??? (1)MCP2510的Bit Timming(位定時)要按照以下原則設定,否則將會造成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。經實際測試,以上參數可以保證正常的CAN總線通信。
??? (2)因為MCP2510在初始化完成后默認處于Configuration(配置)模式下,所以就需要在MCP2510的初始化完成后將其置為Normal(正常)模式,否則MCP2510將一直停留在Configuration模式下,不能進行正常工作。將MCP2510置為Normal模式可通過使用MCP2510內置的BitModify(位修改)指令向CANCTRL控制字寫入一個“0”字節來實現。
??? (3)在進行MCP2510的“讀”操作時,發送完“讀”指令及其地址碼之后,仍然需要向MCP2510提供時鐘,以接收“讀”到的數據。這可以通過向MCP2510發送一個“0”字節來實現。
??? (4)在對MCP2510做完任意操作后,都要延時一段時間,使其有足夠的時間來準備接收下次操作的命令,防止出現MCP2510“忙”的情況。
??? (5)在對MCP2510做任何操作之前,都要由單片機向MCP2510的片選端CS輸出一個低電平,使MCP2510被選通。
??? (6)MSP430的UART模塊要選用同步SPI通信模式,以保證和MCP2510的通信是通過SPI接口進行的。這可以通過將MSP430的控制字UCTL中的SYNC位置位來實現。
??? (7)在第一次向MSP430的TXBUF控制字寫入待發送的數據之前,MSP430的發送中斷允許標志位(IE2中的UTXIE1)應該處于復位狀態,這樣可以防止還沒有發送任何數據就直接進入發送中斷服務程序,造成通信無法正常進行的情況。
??? (8)在MSP430的接收中斷服務程序中,要先處理完接收到的幀,再清除接收中斷標志位。因為如果在還沒有把當前的幀數據處理完的情況下就清除了接收中斷標志位,會造成立即開始接收新的幀數據,這樣就很可能會造成當前的幀數據在尚未被處理完畢時被新的幀覆蓋。
??? 以上介紹了CAN控制器芯片MCP2510,提出了一個利用MCP2510和MSP430單片機組成遠程監測系統的方案,并結合硬件電路和軟件的實現對其可行性和正確性進行了證明。隨著CAN總線技術的進一步推廣應用,基于CAN總線的控制系統將會有廣闊的應用前景,而MCP2510芯片也將在越來越多的領域中得到廣泛應用。
參考文獻
1 鄔寬明.CAN總線原理和應用系統設計.北京:北京航空航天大學出版社,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