摘 要:在此提出一種基于AT91RM9200處理器,并以MCP2510為CAN 控制器的智能節點設計方案。首先描述CAN智能節點硬件的設計原理并給出了選用的主要芯片的型號;接著詳細描述CAN智能節點軟件設計流程;最后說明CAN智能節點軟、硬件的調試方法。目前已完成CAN智能節點硬件和軟件的設計及調試,并成功移植到VxWorks 5.5操作系統上運行,證明了該設計方案正確可行。
關鍵詞:CAN智能節點; AT91RM9200; MCP2510; PCA82C250
中圖分類號:TP302.1 文獻標識碼:B
文章編號:1004-373X(2010)12-0026-03
Design of CAN Smart Node Based on AT91RM9200
HE Bing-lin,ZHANG Huan-wen,LIANG Zhu-yang,DU Qi-zhang
(Guangdong Electronic Technology Research Institute, Guangzhou 510630, China)
Abstract:A design solution of CAN smart node based on AT91RM9200 and MCP2510 is put forward. Firstly, the design principle of hardware for CAN smart node is depicted, and the type of selected chips is also presented. Then, the design flow of software for CAN smart node is depicted in detail. Finally, the debug method of hardware and software for CAN smart node is illustrated. Both the design and debug work of hardware and software for CAN smart node were finished, and it was migrated to run in VxWorks5.5 operating system successfully. The design solution is proved to be proper and feasible.
Keywords:CAN smart node; AT91RM9200; MCP2510; PCA82C250
近年來工業測控系統從傳統的集中測量控制系統轉向網絡化的集散控制系統[1]。隨著現場總線技術高速發展和標準化程度的不斷提高,以現場總線技術為基礎的開放型集散測控系統得到廣泛應用??偩€是控制器局域網(controller area network,CAN)屬于現場總線范疇,是一種能有效支持分布式控制的串行通信網絡,可將掛接在現場總線上作為網絡節點的智能設備連接成網絡系統,并進一步構成集散測控系統[2]。
CAN智能節點位于傳感器和執行機構所在的現場,在集散控制系統中起著承上啟下的作用。一方面,它必須和上位機進行通信,以完成數據交換;另一方面,它根據系統的需要以完成測量與控制的功能。因此,CAN智能節點的設計在工業集散測控系統中有著十分重要的作用。本文將提出一種基于ARM9處理器AT91RM9200和CAN 控制器MCP2510構建的CAN智能節點的設計方案,并介紹了該方案的軟硬件設計及調試方法。
1 硬件設計
CAN智能節點的設計涉及2個方面:需要實現的功能;如何實現CAN通信。因此本文基于AT91RM9200和MCP2510提出的CAN智能節點的設計框架如圖1所示。在此首先介紹主要芯片的特性,然后再說明智能節點的設計原理。
圖1 智能節點框架
1.1 芯片特性
AT91RM9200是Atmel公司生產的一款ARM9處理器,它是完全圍繞ARM920T ARM Thumb處理器構建的系統。它有豐富的系統與應用外設及標準的接口,從而為低功耗、低成本、高性能的計算機寬范圍應用提供一個單片解決方案[3]。
MCP2510是由美國微芯科技有限公司(Microchip Technology Inc.)生產的一款帶SPI接口的CAN協議控制器,完全支持CAN總線V2.0A/B技術規范;能夠發送和接收標準和擴展報文,通信速率最高可達1 Mb/s,同時具備驗收過濾以及報文管理功能;通過SPI接口與MCU進行通信,最高數據傳輸速率高達5 Mb/s;包含3個發送緩沖器和2個接收緩沖器,還具有靈活的中斷管理能力[4]。所有這些特點使得MCU對CAN總線的操作變得非常簡單。
PCA82C250是由Philips半導體公司生產的一款CAN收發器,是CAN協議控制器和物理傳輸線路之間的接口。它可以用高達1 Mb/s的位速率在2條有差動電壓的總線電纜上傳輸數據[5]。
1.2 設計原理[6]
本文將CAN智能節點需要實現的功能統稱為功能模塊。由于AT91RM9200處理器具有豐富的系統與應用外設及標準的接口,因此根據應用的需要很容易就可實現功能模塊的擴展。本文著重說明AT91RM9200處理器如何實現CAN總線的擴展。
AT91RM9200處理器提供4個SPI接口。其中MOSI(主機輸出從機輸入)、MISO(主機輸入從機輸出)、SPCK(串行時鐘)3個引腳信號由4個SPI接口共用;而4個片選信號NPCS0,NPCS1,NPCS2,NPCS3則用于分別選通4個SPI接口。而CAN控制器MCP2510的SPI接口引腳定義:SI(數據輸入)、SO(數據輸出)、SCK(時鐘輸入)、CS(片選輸入)。該設計將AT91RM9200第二個SPI接口與MCP2510的SPI接口相連(MOSISI,MISOSO,SPCKSCK,NPCS1CS),從而建立了它們之間通信的橋梁。同時將MCP2510芯片的中斷輸出引腳INT與AT91RM9200芯片的中斷輸入引腳IRQ5相連,從而可將MCP2510芯片產生的中斷(包括發送、接收、報文錯誤、總線活動喚醒、錯誤等中斷)事件通知AT91RM9200處理器,讓其作出相應的處理。
CAN控制器MCP2510可以通過串行數據發送引腳(TXCAN)和串行數據接收引腳(RXCAN)直接連接到CAN收發器PCA82C250。該設計為了實現MCP2510與PCA82C250之間的電流隔離,在它們之間放置了2個光耦。然而,在協議控制器和收發器之間使用光耦,通常會增加總線節點的循環延遲。光耦6N137的典型傳播延時為60 ns[7],比較適合傳輸速率小于等于125 Kb/s時的中低速應用場合;而在傳輸速率在125 Kb/s ~1 Mb/s的高速應用場合中,應考慮使用傳播延時小于40 ns的高速光耦,如HCPL-7101。
CAN收發器PCA82C250通過有差動發送和接收功能的2個總線終端CANH和CANL連接到總線電纜。PCA82C250的輸入引腳RS通過外接電阻Rext到地,可以選擇3種不同的工作模式。第1種是高速模式,支持最大的總線速度和/或長度;第2種是斜率模式,其輸出轉換速度可故意降低以減少電磁輻射;第3種是準備模式,其在電池供電并對功耗消耗非常低的應用非常適合。該設計將PCA82C250的引腳RS外接阻值為47 kΩ的電阻,從而使它工作在斜率模式,這樣可以使用非屏蔽的總線電纜,降低系統的成本。但總線信號轉換速率被故意減低了,因此該設計只能應用在傳輸速率小于等于125 Kb/s時的中低速應用場合,相應光耦選擇6N137即可。
2 軟件設計 [8]
CAN智能節點軟件設計主要包括2個方面:CAN通信和CAN節點功能模塊的軟件設計。CAN節點功能模塊軟件的實現因需求而異,在此不做介紹。本文著重介紹CAN通信軟件的設計,它主要由3部分組成:CAN初始化、CAN發送數據、CAN接收數據。
2.1 CAN初始化
由圖2(a)可知,CAN初始化主要包括PIOA端口初始化、SPI初始化、MCP2510初始化、中斷初始化。現分別介紹如下:
(1) PIOA端口初始化。由于AT91RM9200每個引腳可配置為通用功能I/O線或與1個或2個外設I/O復用的I/O線。因此必須通過軟件配置PIOA端口:將PA0,PA1,PA2,PA4引腳分別定義為MISO,MOSI,SPCK,NPCS1,從而完成CAN智能節點SPI接口的定義;將PA3引腳定義為IRQ5,從而完成CAN智能節點中斷信號的定義。
(2) SPI初始化。通過PIOA端口初始化,只是完成SPI接口的引腳定義。為了使SPI接口能夠正常工作,首先配置電源管理控制器(PMC)以使能SPI時鐘;如果允許SPI中斷請求,必須對高級中斷控制器(AIC)進行配置;最后通過SPI的模式寄存器SPI_MR。指定SPI為主機模式、固定外設選擇、SPI時鐘為MCK、片選信號NPCS1有效;通過SPI的片選1寄存器SPI_CSR1指定SPCK時鐘極性、時鐘相位以支持MCP2510的(0,0)或(1,1)的SPI模式,指定SPI接口以8位數據進行傳輸匹配MCP2510的命令及數據格式,指定SPI的串行時鐘波特率以匹配與MCP2510的通信。
(3) MCP2510初始化。在完成PIOA端口、SPI初始化的基礎上,即可按照圖2(a)虛線框中的流程進行MCP2510初始化:首先必須使MCP2510進入配置模式;然后對MCP2510相關寄存器(位定時配置寄存器、接收濾波寄存器、接收屏蔽寄存器、引腳控制和狀態寄存器)進行配置;最后使MCP2510進入正常模式。根據MCP2510提供的SPI命令集(讀指令、寫指令、請求發送指令、狀態讀指令、位修改指令、復位指令),可以通過對AT91RM9200的SPI接收數據寄存器SPI_RDR,SPI發送數據寄存器SPI_TDR,SPI狀態寄存器SPI_SR的操作實現相應的函數:McpRdByte(),McpWrByte(),WriteRTS(),McpRdStatus(),BitModify(),McpReset()。軟件通過這些基本的指令函數完成MCP2510相關寄存器的配置。
(4) 中斷初始化。通過AT91RM9200的高級中斷控制器(AIC),首先配置IRQ5中斷的優先級為最高,中斷觸發類型為下降沿觸發;接著將中斷服務程序IRQ5_ISR()的地址設置到中斷向量寄存器;最后使能IRQ5中斷。
2.2 CAN發送數據
當完成CAN的初始化后,即可使用3個發送緩沖器發送報文數據。由圖2(b)可知:在發送數據前,首先通過發送緩沖器N(N=0,1,2)控制寄存器TXBNCTRL終止報文發送,并設定發送緩沖器N報文發送的優先級;接著通過發送緩沖器N標準標識符高低位寄存器TXBNSIDH,TXBNSIDL設定標準標識符,如果報文采用擴展標識符,還需通過發送緩沖器N擴展標識符高低位寄存器TXBNEID8,TXBNEID0設定擴展標識符。
當發送緩沖器N相關寄存器初始化后,發送任務處于休眠等待狀態。一旦有數據需要發送,即可將需要發送的數據(每次最多8 B)存放在發送緩沖器N的數據寄存器TXBND7~ TXBND0,并且通過送緩沖器N的數據長度寄存器TXBNDLC設定每次發送的字節數,最后通過發送緩沖器N控制寄存器TXBNCTRL啟動數據發送。當數據發送完畢,發送任務又處于休眠等待狀態。
2.3 CAN接收數據
當完成CAN的初始化后,即可使用兩個接收緩沖器接收報文數據。由圖2(c)可知:在接收數據前,首先通過接收緩沖器N(N=0,1)控制寄存器RXBNCTRL,設定接收緩沖器的工作模式為接收符合濾波條件的所有帶擴展標識符或標準標識符的有效報文;如果允許MCP2510接收中斷,還需通過中斷使能寄存器CANINTE,允許接收緩沖器N裝入報文時產生中斷。
當接收緩沖器N相關寄存器初始化后,接收任務處于休眠等待狀態。當接收任務通過輪詢或中斷方法發現需要接收數據時,它通過接收緩沖器N標準標識符高低位寄存器RXBNSIDH,RXBNSIDL獲取標準標識符;如果收到的報文是擴展幀,可通過RXBNSIDL及接收緩沖器N擴展標識符中間、低位寄存器RXBNEID8,RXBNEID0獲取擴展標識符;通過接收緩沖器N數據長度碼寄存器RXBNDLC獲取接收到的數據字節個數,進而通過接收緩沖器N數據寄存器RBNDm7~ RBNDm0獲取接收報文中的數據信息。當數據接收完畢,接收任務又處于休眠等待狀態。
圖2 軟件流程圖
3 軟硬件調試
當CAN智能節點的硬件和軟件設計完畢,需要對其進行軟、硬件的調試以驗證其設計的正確性。CAN智能節點軟、硬件調試按以下步驟依次進行:
(1)CAN自發、自收功能調試。只要在CAN初始化過程完成MCP2510相關寄存器的配置,將MCP2510設置為環回模式,即可使MCP2510器件內部發送緩沖器和接收緩沖器之間進行報文自發、自收,而無需通過CAN總線。
(2) CAN通信功能調試。按照圖3所示方案進行CAN通信功能的調試。其中USB-CAN適配器采用武漢吉陽光電科技有限公司一款帶有USB接口和1路CAN接口的GY8507 USB-CAN總線適配器。通過該適配器,PC可以通過USB接口連接一個標準CAN網絡,從而與CAN智能節點通信[9]。使用廠家提供的CANTools工具軟件可以方便進行CAN智能節點數據的發送和接收調試。
(3) CAN功能模塊調試。由于CAN智能節點具體實現的功能各異,不詳細介紹CAN功能模塊的調試。
4 結 語
目前已完成CAN智能節點通信電路的軟、硬件設圖3 CAN調試框圖
計及調試,并成功將軟件移植到VxWorks 5.5操作系統上運行。基于功能強大的AT91RM9200處理器以及高可靠和強實時的VxWorks 5.5操作系統[10],容易構建出滿足應用需求的CAN智能節點。
參考文獻
[1]劉學軍,萬曼影,師好智.基于AT91RM9200的CAN-Ethernet間的智能網關的設計[J].微型電腦應用,2006,22(4):40-42.
[2]尹曉方.CAN智能節點的設計[J].國外電子元器件,2004 (5):19-21.
[3]Atmel Corporation. AT91RM9200 datasheet[M]. Atmel Corporation, 2003.
[4]Microchip Technology Inc. MCP2510 datasheet[M]. Microchip Technology Inc, 2004.
[5]Philips Semiconductors. PCA82C250 datasheet[M]. Philips Semiconductors, 2000.
[6]師武旗,孫俊濤,徐洪建,等.一種CAN總線智能節點的設計[J].電子產品世界,2005(10):96-97.
[7]Fairchild Semiconductor Corporation. 6N137 datasheet[M]. Fairchild Semiconductor Corporation, 2005.
[8]周治國,王佳,賀春妮,等.基于ARM9的CAN控制器VxWorks驅動開發[C].上海:中國儀器儀表學會、中國電子學會2008年醫療儀器學術年會,2008.
[9]武漢吉陽光電科技有限公司.GY8507 USB-CAN 適配器使用說明書V2.1[M].武漢:武漢吉陽光電科技有限公司,2009.
[10]Wind River Systems Inc.. VxWorks programmer′s guide 5.5[M]. Wind River Systems Inc.. 2002.