呂寶鋒
(陜西凌云電器集團有限公司設計所,陜西寶雞 721006)
基于MCP2515的CAN總線擴展
呂寶鋒
(陜西凌云電器集團有限公司設計所,陜西寶雞 721006)
隨著數(shù)字信號處理器TMS320F2812的廣泛應用,擴展TMS320F2812的CAN總線接口成為一種趨勢。針對本公司某測試設備的整體設計要求,利用具有SPI接口的獨立CAN控制器MCP2515通過TMS320F2812的SPI接口,實現(xiàn)TMS320F2812的CAN總線擴展,滿足了該測試設備的控制精度、處理速度以及對外雙冗余CAN總線接口的設計要求,具有較強的工程實用價值。
MCP2515;CAN總線;SPI總線;TMS320F2812
CAN(Controller Area Network)即控制器局域網(wǎng)絡總線,是德國Bosch公司在1986年面向汽車各子系統(tǒng)間通信而開發(fā)出的通信協(xié)議[1],被認為是目前最有前途的現(xiàn)場總線之一,廣泛應用于工業(yè)自動化監(jiān)控網(wǎng)絡中,具有高質(zhì)量、低成本、易實現(xiàn)、安全性高的特點。TMS320F2812數(shù)字信號處理器是TI(Texas Instruments)美國德州儀器公司最新推出的32位定點DSP控制器,是目前控制領域最先進的處理器之一,其頻率高達150 MHz,提高了控制系統(tǒng)的精度和芯片的處理能力[2]。TMS320F2812本身集成了一路CAN總線接口,僅依靠TMS320F2812不能滿足本測試設備對雙冗余的CAN總線設計要求[3]。文中采用TMS320F2812作為測試設備的主控制器。雖然TMS320F2812本身只帶一路CAN總線,但同時又自帶一路SPI(Serial Peripheral Interface)即串行外圍設備接口總線,而且MCP2515是一款具有SPI接口的獨立CAN控制器,完全支持 CAN V2.0B技術規(guī)范[4]。因此采用 TMS320F2812通過MCP2515實現(xiàn)其CAN總線擴展,文中即給出該應用實例,包括硬件設計電路原理圖,軟件系統(tǒng)程序設計流程圖和簡單的子程序流程,并加以說明。
Microchip推出的MCP2515是一款完全支持 CAN V2.0B技術規(guī)范、具有SPI接口的獨立CAN控制器,內(nèi)含2個接收緩沖器、3個發(fā)送緩沖器、6個29位驗收濾波寄存器以及2個29位驗收屏蔽寄存器。具有靈活的中斷性能和接收過濾及信息管理能力,另外還有幀屏蔽和過濾、幀優(yōu)先級設定等特性,能減少對MCU資源的占有。MCP2515的SPI接口時鐘頻率最高可達10 MHz,同時具備最高40 MHz的時鐘輸入速度,在實際應用中其通信速率最高可達1 Mbit·s-1,能夠發(fā)送和接收標準/擴展數(shù)據(jù)幀以及遠程幀。
MCP2515具有配置模式、正常模式等5種工作模式。利用CANCTRL.REQOP位可進行工作模式的選擇,能夠靈活應用于不同的系統(tǒng),通過其監(jiān)聽模式還能在CAN網(wǎng)絡中實現(xiàn)自動波特率檢測。
MCP2515的內(nèi)部結(jié)構(gòu)框圖如圖1所示[4],共包括CAN模塊、SPI模塊以及其他模塊共3部分。其中CAN模塊完成CAN總線上所有報文的收發(fā),SPI模塊實現(xiàn)MCU和MCP2515間的SPI總線的數(shù)據(jù)通信,控制邏輯/寄存器實現(xiàn)對MCP2515的設置和控制,對外接口提供MCP2515的多個中斷引腳,用戶可根據(jù)需要自由選擇,其內(nèi)部結(jié)構(gòu)框圖如圖1所示。
圖1 MCP2515內(nèi)部結(jié)構(gòu)框圖
該測試設備的硬件電路結(jié)構(gòu)原理如圖2所示,其虛線部分是對TMS320F2812進行CAN總線擴展的硬件原理。MCU是使用TI公司的TMS320F2812,通過其內(nèi)部集成的SPI總線接口和MCP2515連接,CAN收發(fā)器采用TI公司的SN65HVD230Q,F(xiàn)PGA采用Xinlix公司的 XC2V1000_FG456,由其分別產(chǎn)生TMS320F2812和MCP2515所需的時鐘、復位信號及一些離散控制信號。MCP2515的中斷輸出引腳直接接到TMS320F2812的外部中斷輸入引腳上。該硬件電路結(jié)構(gòu)原理表示出簡單的電氣連接關系,在實際應用中,會根據(jù)實際應用條件的不同,進行相應的適應性改進。例如,如果TMS320F2812和MCP2515所使用的電源不同,就需要在TMS320F2812和MCP2515之間加電平轉(zhuǎn)換芯片,以滿足其不同的電源要求;并且還可在MCP2515和CAN收發(fā)器之間,增加光耦隔離器以增加系統(tǒng)的抗干擾能力,并能有效提高系統(tǒng)的可靠性。
TMS320F2812可通過SPI接口和MCP2515直接連接,MCP2515的 CLK和 TMS320F2812的 SPICLKA連接,為數(shù)據(jù)的發(fā)送和接收提供同步時鐘信號。TMS320F2812的SPI接口有主和從兩種操作模式,在該測試設備中其工作在主模式。
TMS320F2812和MCP2515之間以SCK作為同步時鐘信號進行通信。在時鐘上升沿,命令和數(shù)據(jù)通過SI引腳送入MCP2515,在時鐘下降沿通過SO引腳把數(shù)據(jù)從MCP2515中讀出。TMS320F2812通過SPI總線讀取MCP2515接收緩沖器里的數(shù)據(jù),MCP2515對CAN總線的數(shù)據(jù)發(fā)送則沒有限制,只要用TMS320F2812通過 SPI接口將待發(fā)送的數(shù)據(jù)寫入MCP2515的發(fā)送緩沖器,然后再調(diào)用發(fā)送請求命令即可將數(shù)據(jù)發(fā)送到CAN總線上。
圖2 測試設備硬件電路結(jié)構(gòu)原理
TMS320F2812通過標準SPI讀寫命令,對MCP2515寄存器進行讀寫操作,完成系統(tǒng)CAN總線的收發(fā),最終實現(xiàn)系統(tǒng)CAN總線的通信。TMS320F2812和MCP2515的通信指令有復位指令、讀指令、讀RX緩沖器指令、寫指令、裝載TX緩沖器指令、請求發(fā)送(RTS)指令、讀狀態(tài)指令、RX狀態(tài)指令和位修改指令等8條指令。
設計中,采用外部中斷方式實現(xiàn)CAN總線數(shù)據(jù)的接收,采用定時中斷的方式實現(xiàn)CAN數(shù)據(jù)的發(fā)送。軟件設計的難點在于MCP2515的初始化和CAN總線數(shù)據(jù)的收發(fā)程序。
MCP2515有用的寄存器有117個,其中包括17個控制寄存器,有配置模式、正常模式、休眠模式、監(jiān)聽模式和環(huán)回模式等5種工作模式。MCP2515的正常工作關鍵在于對其進行初始化處理,在初始化之前,首先必須通過TMS320F2812給MCP2515發(fā)送一個復位指令,使其進入配置模式,然后才能對其進行初始化。MCP2515的初始化還包括設置波特率寄存器、設置發(fā)送/接收控制寄存器、設置驗收屏蔽/濾波寄存器等[5]。
MCP2515的RXB0和RXB1兩個全接收緩沖器均配備一個驗收屏蔽寄存器和兩個驗收濾波寄存器。RXB0比RXB1具有更高的優(yōu)先級。當系統(tǒng)有報文數(shù)據(jù)時,如果CANINTE.RXnIE的相應位被置1,MCP2515的INT管腳會產(chǎn)生一個中斷信號,顯示有報文收到,與其對應的接收緩沖器的CANINTF.RxnIF位將置位,接收緩沖器中的報文只要接收處理完畢,TMS320F2812就應當立即清零該位以準備接收下一條報文[5]。
MCP2515的3個發(fā)送緩沖器均有一個TXBnCTRL寄存器控制報文的發(fā)送條件、對應的發(fā)送優(yōu)先級以及報文發(fā)送時的狀態(tài)。在寫入發(fā)送緩沖器之前,必須將TXBnCTRL.TXREQ位清零,確保發(fā)送緩沖器中沒有等待發(fā)送的報文。通過TXBnCTRL.TXREQ位置1,可以啟動相應的發(fā)送緩沖器準備發(fā)送報文,一旦檢測到總線空閑時,就會啟動報文發(fā)送。報文發(fā)送成功TXBnCTRL.TXREQ位清零,CANINTF.TXnIF置位,如果同時CANINTE.TXnIE被置位,則會產(chǎn)生發(fā)送中斷[5]。
在軟件系統(tǒng)中,主要分3個程序模塊,分別是主程序、接收中斷子程序和定時中斷(發(fā)送)子程序。各個程序流程清晰明了,相互之間相對獨立。其中主程序是在完成一些基本的系統(tǒng)設置和各種初始化后等待接收中斷的到來,在接收中斷到來后進行相應的數(shù)據(jù)接收處理,實現(xiàn)該測試設備對被測設備的CAN總線的接收處理。接收中斷子程序具體完成該測試設備對被測設備的CAN總線的接收,并設置接收中斷標志,定時中斷(發(fā)送)子程序完成該測試設備對被測設備的定時CAN總線控制指令的下發(fā)。
圖3~圖5分別為主程序、接收中斷子程序和定時中斷(發(fā)送)子程序的流程圖。
圖3 主程序流程圖
該測試設備所采用的軟硬件原理,設計思想獨特、結(jié)構(gòu)原理簡單、結(jié)果實用可靠。目前,該測試設備已完成了所有的設計工作,通過了各項驗收試驗,達到了預期設計要求。具體的仿真試驗結(jié)果如下:(1)實現(xiàn)了雙冗余的CAN總線設計,兩路CAN總線收發(fā)正常,并能隨時進行任意切換。(2)能滿足測試設備對CAN總線控制精度和處理速度的要求。(3)能滿足對被測設備的CAN總線控制及回傳信息的接收處理。
文中論述了基于帶有SPI總線接口的MCP2515接口,通過 TMS320F2812的 SPI總線接口實現(xiàn)對TMS320F2812進行CAN總線擴展的實際研究和設計,介紹了該測試設備的設計思路、MCP2515芯片特性以及TMS320F2812與MCP2515連接的硬件電路結(jié)構(gòu)原理;分析了TMS320F2812的軟件編程;給出了主程序流程和兩個子程序處理流程。目前,按照上述軟硬件原理設計的該測試設備已通過了各項檢驗驗收,完能夠滿足實際應用要求,具有較強的工程實用價值。
[1]翟淳.基于MCP2515的SPI接口CAN總線控制器的軟件設計[J].中國科技博覽,2010,(15):86.
[2]蘇奎峰.TMS320F2812原理與開發(fā)[M].北京:電子工業(yè)出版社,2005.
[3]高瑛.TMS320F28335與串行A/D轉(zhuǎn)換器ADS7863的接口設計[J].現(xiàn)代電子技術,2011,13(34):98.
[4]Microchip Conpration.Stand - Alone CAN Controller With SPI Interface[M].USA:Microchip Conpration,2005.
[5]譚浩強.C語言程序設計[M].北京;清華大學出版社,2010.
[6]李玲娟,畢瑞英.網(wǎng)絡環(huán)境中基于元數(shù)據(jù)節(jié)點的資源發(fā)現(xiàn)方法[J].西安郵電學院學報,2008(1):97-100.
[7]高士友,王代強,王義,等.基于CAN總線的轎車窗智能控制系統(tǒng)設計[J].電子設計工程,2009(3):49-52.
Expansion of CAN Bus Based on the Mcp2515
LüBaofeng
(Department of Design,Shaanxi Lingyun Electronics Group CO.,LTD.,Baoji 721006,China)
With the wide application of digital signal processor TMS320F2812,it has become a trend to expand the CAN bus interface of TMS320F2812.In order to meet the overall design requirements of a test equipment in Shaanxi Lingyun Electronics Group CO.,LTD.,we achieve the CAN bus expansion of the TMS320F2812 by using stand-alone CAN controller MCP2515 which has an SPI interface through the SPI interface of TMS320F2812 and meet the control accuracy and processing speed of the test equipment as well as the design requirement of the external double redundancy CAN bus interface.It is of great practical value.
MCP2515;CAN bus;SPI bus;TMS320F2812
TP342+.3
A
1007-7820(2012)06-044-04
2012-02-19
呂寶鋒(1974—),男,工程師。研究方向:無線電導航與通訊。