基于MCP2515的CAN總線擴展
摘要 隨著數(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é)議,被認為是目前最有前途的現(xiàn)場總線之一,廣泛應用于工業(yè)自動化監(jiān)控網(wǎng)絡中,具有高質量、低成本、易實現(xiàn)、安全性高的特點。TMS320F2812數(shù)字信號處理器是TI(Texas Instruments)美國德州儀器公司最新推出的32位定點DSP控制器,是目前控制領域最先進的處理器之一,其頻率高達150 MHz,提高了控制系統(tǒng)的精度和芯片的處理能力。TMS320F2812本身集成了一路CAN總線接口,僅依靠TMS320F2812不能滿足本測試設備對雙冗余的CAN總線設計要求。文中采用TMS320F2812作為測試設備的主控制器。雖然TMS320F2812本身只帶一路CAN總線,但同時又自帶一路SPI(Serial PeripheralInterface)即串行外圍設備接口總線,而且MCP2515是一款具有SPI接口的獨立CAN控制器,完全支持CANV2.0B技術規(guī)范。因此采用TMS320F2812通過MCP2515實現(xiàn)其CAN總線擴展,文中即給出該應用實例,包括硬件設計電路原理圖,軟件系統(tǒng)程序設計流程圖和簡單的子程序流程,并加以說明。
1 芯片介紹
Microchip推出的MCP2515是一款完全支持CANV2.0B技術規(guī)范、具有SPI接口的獨立CAN控制器,內含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的內部結構框圖如圖1所示,共包括CAN模塊、SPI模塊以及其他模塊共3部分。其中CAN模塊完成CAN總線上所有報文的收發(fā),SPI模塊實現(xiàn)MCU和MCP2515間的SPI總線的數(shù)據(jù)通信,控制邏輯/寄存器實現(xiàn)對MCP2515的設置和控制,對外接口提供MCP2515的多個中斷引腳,用戶可根據(jù)需要自由選擇,其內部結構框圖如圖1所示。
2 系統(tǒng)硬件電路結構設計
該測試設備的硬件電路結構原理如圖2所示,其虛線部分是對TMS320F2812進行CAN總線擴展的硬件原理。MCU是使用TI公司的TMS320F28 12,通過其內部集成的SPI總線接口和MCP2515連接,CAN收發(fā)器采用TI公司的SN65HVD230Q,F(xiàn)PGA采用Xinlix公司的XC2V1000_FG456,由其分別產生TMS320F2812和MCP2515所需的時鐘、復位信號及一些離散控制信號。MCP2515的中斷輸出引腳直接接到TMS320F2812的外部中斷輸入引腳上。該硬件電路結構原理表示出簡單的電氣連接關系,在實際應用中,會根據(jù)實際應用條件的不同,進行相應的適應性改進。例如,如果TMS320F2812和MCP2515所使用的電源不同,就需要在TMS320F2812和MCP2515之間加電平轉換芯片,以滿足其不同的電源要求;并且還可在MCP 2515和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ā)送緩沖器,然后再調用發(fā)送請求命令即可將數(shù)據(jù)發(fā)送到CAN總線上。
TMS320F2812通過標準SPI讀寫命令,對MCP2515寄存器進行讀寫操作,完成系統(tǒng)CAN總線的收發(fā),最終實現(xiàn)系統(tǒng)CAN總線的通信。TMS320F2 812和MCP2515的通信指令有復位指令、讀指令、讀RX緩沖器指令、寫指令、裝載TX緩沖器指令、請求發(fā)送(RTS)指令、讀狀態(tài)指令、RX狀態(tài)指令和位修改指令等8條指令。
3 軟件設計
設計中,采用外部中斷方式實現(xiàn)CAN總線數(shù)據(jù)的接收,采用定時中斷的方式實現(xiàn)CAN數(shù)據(jù)的發(fā)送。軟件設計的難點在于MCP2515的初始化和CAN總線數(shù)據(jù)的收發(fā)程序。
3.1 MCP2515的初始化
MCP2515有用的寄存器有117個,其中包括17個控制寄存器,有配置模式、正常模式、休眠模式、監(jiān)聽模式和環(huán)回模式等5種工作模式。M CP2515的正常工作關鍵在于對其進行初始化處理,在初始化之前,首先必須通過TMS320F2812給MCP2515發(fā)送一個復位指令,使其進入配置模式,然后才能對其進行初始化。MCP2515的初始化還包括設置波特率寄存器、設置發(fā)送/接收控制寄存器、設置驗收屏蔽/濾波寄存器等。
3.2 MCP2515的數(shù)據(jù)接收
MCP2515的RXB0和RXB1兩個全接收緩沖器均配備一個驗收屏蔽寄存器和兩個驗收濾波寄存器。RXB0比RXB1具有更高的優(yōu)先級。當系統(tǒng)有報文數(shù)據(jù)時,如果CANINTE.RXnIE的相應位被置1,MCP2515的INT管腳會產生一個巾斷信號,顯示有報文收到,與其對應的接收緩沖器的CANI NTF.RxnIF位將置位,接收緩沖器中的報文只要接收處理完畢,TMS320F2812就應當立即清零該位以準備接收下一條報文。
3.3 MCP2515的數(shù)據(jù)發(fā)送
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置位,如果同時ANINTE.Txn IE被置位,則會產生發(fā)送中斷。
評論