基于MCP2515的CAN總線擴(kuò)展
摘要 隨著數(shù)字信號處理器TMS320F2812的廣泛應(yīng)用,擴(kuò)展TMS320F2812的CAN總線接口成為一種趨勢。針對本公司某測試設(shè)備的整體設(shè)計(jì)要求,利用具有SPI接口的獨(dú)立CAN控制器MCP2515通過TMS320F2812的SPI接口,實(shí)現(xiàn)TMS320F2812的CAN總線擴(kuò)展,滿足了該測試設(shè)備的控制精度、處理速度以及對外雙冗余CAN總線接口的設(shè)計(jì)要求,具有較強(qiáng)的工程實(shí)用價值。
關(guān)鍵詞 MCP2515;CAN總線;SPI總線;TMS320F2812
CAN(Controller Area Network)即控制器局域網(wǎng)絡(luò)總線,是德國Bosch公司在1986年面向汽車各子系統(tǒng)間通信而開發(fā)出的通信協(xié)議,被認(rèn)為是目前最有前途的現(xiàn)場總線之一,廣泛應(yīng)用于工業(yè)自動化監(jiān)控網(wǎng)絡(luò)中,具有高質(zhì)量、低成本、易實(shí)現(xiàn)、安全性高的特點(diǎn)。TMS320F2812數(shù)字信號處理器是TI(Texas Instruments)美國德州儀器公司最新推出的32位定點(diǎn)DSP控制器,是目前控制領(lǐng)域最先進(jìn)的處理器之一,其頻率高達(dá)150 MHz,提高了控制系統(tǒng)的精度和芯片的處理能力。TMS320F2812本身集成了一路CAN總線接口,僅依靠TMS320F2812不能滿足本測試設(shè)備對雙冗余的CAN總線設(shè)計(jì)要求。文中采用TMS320F2812作為測試設(shè)備的主控制器。雖然TMS320F2812本身只帶一路CAN總線,但同時又自帶一路SPI(Serial PeripheralInterface)即串行外圍設(shè)備接口總線,而且MCP2515是一款具有SPI接口的獨(dú)立CAN控制器,完全支持CANV2.0B技術(shù)規(guī)范。因此采用TMS320F2812通過MCP2515實(shí)現(xiàn)其CAN總線擴(kuò)展,文中即給出該應(yīng)用實(shí)例,包括硬件設(shè)計(jì)電路原理圖,軟件系統(tǒng)程序設(shè)計(jì)流程圖和簡單的子程序流程,并加以說明。
1 芯片介紹
Microchip推出的MCP2515是一款完全支持CANV2.0B技術(shù)規(guī)范、具有SPI接口的獨(dú)立CAN控制器,內(nèi)含2個接收緩沖器、3個發(fā)送緩沖器、6個29位驗(yàn)收濾波寄存器以及2個29位驗(yàn)收屏蔽寄存器。具有靈活的中斷性能和接收過濾及信息管理能力,另外還有幀屏蔽和過濾、幀優(yōu)先級設(shè)定等特性,能減少對MCU資源的占有。MCP2515的SPI接口時鐘頻率最高可達(dá)10 MHz,同時具備最高40 MHz的時鐘輸入速度,在實(shí)際應(yīng)用中其通信速率最高可達(dá)1 Mbit·s-1,能夠發(fā)送和接收標(biāo)準(zhǔn)/擴(kuò)展數(shù)據(jù)幀以及遠(yuǎn)程幀。
MCP2515具有配置模式、正常模式等5種工作模式。利用CANCTRL REQOP位可進(jìn)行工作模式的選擇,能夠靈活應(yīng)用于不同的系統(tǒng),通過其監(jiān)聽模式還能在CAN網(wǎng)絡(luò)中實(shí)現(xiàn)自動波特率檢測。
MCP2515的內(nèi)部結(jié)構(gòu)框圖如圖1所示,共包括CAN模塊、SPI模塊以及其他模塊共3部分。其中CAN模塊完成CAN總線上所有報文的收發(fā),SPI模塊實(shí)現(xiàn)MCU和MCP2515間的SPI總線的數(shù)據(jù)通信,控制邏輯/寄存器實(shí)現(xiàn)對MCP2515的設(shè)置和控制,對外接口提供MCP2515的多個中斷引腳,用戶可根據(jù)需要自由選擇,其內(nèi)部結(jié)構(gòu)框圖如圖1所示。
2 系統(tǒng)硬件電路結(jié)構(gòu)設(shè)計(jì)
該測試設(shè)備的硬件電路結(jié)構(gòu)原理如圖2所示,其虛線部分是對TMS320F2812進(jìn)行CAN總線擴(kuò)展的硬件原理。MCU是使用TI公司的TMS320F28 12,通過其內(nèi)部集成的SPI總線接口和MCP2515連接,CAN收發(fā)器采用TI公司的SN65HVD230Q,F(xiàn)PGA采用Xinlix公司的XC2V1000_FG456,由其分別產(chǎn)生TMS320F2812和MCP2515所需的時鐘、復(fù)位信號及一些離散控制信號。MCP2515的中斷輸出引腳直接接到TMS320F2812的外部中斷輸入引腳上。該硬件電路結(jié)構(gòu)原理表示出簡單的電氣連接關(guān)系,在實(shí)際應(yīng)用中,會根據(jù)實(shí)際應(yīng)用條件的不同,進(jìn)行相應(yīng)的適應(yīng)性改進(jìn)。例如,如果TMS320F2812和MCP2515所使用的電源不同,就需要在TMS320F2812和MCP2515之間加電平轉(zhuǎn)換芯片,以滿足其不同的電源要求;并且還可在MCP 2515和CAN收發(fā)器之間,增加光耦隔離器以增加系統(tǒng)的抗干擾能力,并能有效提高系統(tǒng)的可靠性。
TMS320F2812可通過SPI接口和MCP2515直接連接,MCP2515的CLK和TMS320F2812的SPICLKA連接,為數(shù)據(jù)的發(fā)送和接收提供同步時鐘信號。
TMS320F2812的SPI接口有主和從兩種操作模式,在該測試設(shè)備中其工作在主模式。
TMS320F2812和MCP2515之間以SCK作為同步時鐘信號進(jìn)行通信。在時鐘上升沿,命令和數(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總線上。
TMS320F2812通過標(biāo)準(zhǔn)SPI讀寫命令,對MCP2515寄存器進(jìn)行讀寫操作,完成系統(tǒng)CAN總線的收發(fā),最終實(shí)現(xiàn)系統(tǒng)CAN總線的通信。TMS320F2 812和MCP2515的通信指令有復(fù)位指令、讀指令、讀RX緩沖器指令、寫指令、裝載TX緩沖器指令、請求發(fā)送(RTS)指令、讀狀態(tài)指令、RX狀態(tài)指令和位修改指令等8條指令。
3 軟件設(shè)計(jì)
設(shè)計(jì)中,采用外部中斷方式實(shí)現(xiàn)CAN總線數(shù)據(jù)的接收,采用定時中斷的方式實(shí)現(xiàn)CAN數(shù)據(jù)的發(fā)送。軟件設(shè)計(jì)的難點(diǎn)在于MCP2515的初始化和CAN總線數(shù)據(jù)的收發(fā)程序。
3.1 MCP2515的初始化
MCP2515有用的寄存器有117個,其中包括17個控制寄存器,有配置模式、正常模式、休眠模式、監(jiān)聽模式和環(huán)回模式等5種工作模式。M CP2515的正常工作關(guān)鍵在于對其進(jìn)行初始化處理,在初始化之前,首先必須通過TMS320F2812給MCP2515發(fā)送一個復(fù)位指令,使其進(jìn)入配置模式,然后才能對其進(jìn)行初始化。MCP2515的初始化還包括設(shè)置波特率寄存器、設(shè)置發(fā)送/接收控制寄存器、設(shè)置驗(yàn)收屏蔽/濾波寄存器等。
3.2 MCP2515的數(shù)據(jù)接收
MCP2515的RXB0和RXB1兩個全接收緩沖器均配備一個驗(yàn)收屏蔽寄存器和兩個驗(yàn)收濾波寄存器。RXB0比RXB1具有更高的優(yōu)先級。當(dāng)系統(tǒng)有報文數(shù)據(jù)時,如果CANINTE.RXnIE的相應(yīng)位被置1,MCP2515的INT管腳會產(chǎn)生一個巾斷信號,顯示有報文收到,與其對應(yīng)的接收緩沖器的CANI NTF.RxnIF位將置位,接收緩沖器中的報文只要接收處理完畢,TMS320F2812就應(yīng)當(dāng)立即清零該位以準(zhǔn)備接收下一條報文。
3.3 MCP2515的數(shù)據(jù)發(fā)送
MCP2515的3個發(fā)送緩沖器均有一個TxBnCTRL寄存器控制報文的發(fā)送條件、對應(yīng)的發(fā)送優(yōu)先級以及報文發(fā)送時的狀態(tài)。在寫入發(fā)送緩沖器之前,必須將TxBnCTRL TXREQ位清零,確保發(fā)送緩沖器中沒有等待發(fā)送的報文。通過TxBnCTRL TXREQ位置1,可以啟動相應(yīng)的發(fā)送緩沖器準(zhǔn)備發(fā)送報文,一旦檢測到總線空閑時,就會啟動報文發(fā)送。報文發(fā)送成功TxBnCTRL.TXREQ位清零,CANINTF TXnIF置位,如果同時ANINTE.Txn IE被置位,則會產(chǎn)生發(fā)送中斷。
4 軟件流程
在軟件系統(tǒng)中,主要分3個程序模塊,分別是主程序、接收中斷子程序和定時中斷(發(fā)送)子程序。各個程序流程清晰明了,相互之間相對獨(dú)立。其中主程序是在完成一些基本的系統(tǒng)設(shè)置和各種初始化后等待接收中斷的到來,在接收中斷到來后進(jìn)行相應(yīng)的數(shù)據(jù)接收處理,實(shí)現(xiàn)該測試設(shè)備對被測設(shè)備的CAN總線的接收處理。接收中斷子程序具體完成該測試設(shè)備對被測設(shè)備的CAN總線的接收,并設(shè)置接收中斷標(biāo)志,定時中斷(發(fā)送)子程序完成該測試設(shè)備對被測設(shè)備的定時CAN總線控制指令的下發(fā)。
圖3~圖5分別為主程序、接收中斷子程序和定時中斷(發(fā)送)子程序的流程圖。
該測試設(shè)備所采用的軟硬件原理,設(shè)計(jì)思想獨(dú)特、結(jié)構(gòu)原理簡單、結(jié)果實(shí)用可靠。目前,該測試設(shè)備已完成了所有的設(shè)計(jì)工作,通過了各項(xiàng)驗(yàn)收試驗(yàn),達(dá)到了預(yù)期設(shè)計(jì)要求。具體的仿真試驗(yàn)結(jié)果如下:(1)實(shí)現(xiàn)了雙冗余的CAN總線設(shè)計(jì),兩路CAN總線收發(fā)正常,并能隨時進(jìn)行任意切換。(2)能滿足測試設(shè)備對CAN總線控制精度和處理速度的要求。(3)能滿足對被測設(shè)備的CAN總線控制及回傳信息的接收處理。
5 結(jié)束語
文中論述了基于帶有SPI總線接口的MCP2515接口,通過TMS320F2812的SPI總線接口實(shí)現(xiàn)對TMS320F2812進(jìn)行CAN總線擴(kuò)展的實(shí)際研究和設(shè)計(jì),介紹了該測試設(shè)備的設(shè)計(jì)思路、MCP2515芯片特性以及TMS320F2812與MCP2515連接的硬件電路結(jié)構(gòu)原理;分析了TMS320F2812的軟件編程;給出了主程序流程和兩個子程序處理流程。目前,按照上述軟硬件原理設(shè)計(jì)的該測試設(shè)備已通過了各項(xiàng)檢驗(yàn)驗(yàn)收,完能夠滿足實(shí)際應(yīng)用要求,具有較強(qiáng)的工程實(shí)用價值。