基于MCP2515的CAN總線擴(kuò)展
摘要 隨著數(shù)字信號(hào)處理器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í)用價(jià)值。
關(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è)自動(dòng)化監(jiān)控網(wǎng)絡(luò)中,具有高質(zhì)量、低成本、易實(shí)現(xiàn)、安全性高的特點(diǎn)。TMS320F2812數(shù)字信號(hào)處理器是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總線,但同時(shí)又自帶一路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個(gè)接收緩沖器、3個(gè)發(fā)送緩沖器、6個(gè)29位驗(yàn)收濾波寄存器以及2個(gè)29位驗(yàn)收屏蔽寄存器。具有靈活的中斷性能和接收過濾及信息管理能力,另外還有幀屏蔽和過濾、幀優(yōu)先級設(shè)定等特性,能減少對MCU資源的占有。MCP2515的SPI接口時(shí)鐘頻率最高可達(dá)10 MHz,同時(shí)具備最高40 MHz的時(shí)鐘輸入速度,在實(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)自動(dòng)波特率檢測。
MCP2515的內(nèi)部結(jié)構(gòu)框圖如圖1所示,共包括CAN模塊、SPI模塊以及其他模塊共3部分。其中CAN模塊完成CAN總線上所有報(bào)文的收發(fā),SPI模塊實(shí)現(xiàn)MCU和MCP2515間的SPI總線的數(shù)據(jù)通信,控制邏輯/寄存器實(shí)現(xiàn)對MCP2515的設(shè)置和控制,對外接口提供MCP2515的多個(gè)中斷引腳,用戶可根據(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所需的時(shí)鐘、復(fù)位信號(hào)及一些離散控制信號(hào)。MCP2515的中斷輸出引腳直接接到TMS320F2812的外部中斷輸入引腳上。該硬件電路結(jié)構(gòu)原理表示出簡單的電氣連接關(guān)系,在實(shí)際應(yīng)用中,會(huì)根據(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ā)送和接收提供同步時(shí)鐘信號(hào)。
TMS320F2812的SPI接口有主和從兩種操作模式,在該測試設(shè)備中其工作在主模式。
TMS320F2812和MCP2515之間以SCK作為同步時(shí)鐘信號(hào)進(jìn)行通信。在時(shí)鐘上升沿,命令和數(shù)據(jù)通過SI引腳送入MCP2515,在時(shí)鐘下降沿通過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í)中斷的方式實(shí)現(xiàn)CAN數(shù)據(jù)的發(fā)送。軟件設(shè)計(jì)的難點(diǎn)在于MCP2515的初始化和CAN總線數(shù)據(jù)的收發(fā)程序。
3.1 MCP2515的初始化
MCP2515有用的寄存器有117個(gè),其中包括17個(gè)控制寄存器,有配置模式、正常模式、休眠模式、監(jiān)聽模式和環(huán)回模式等5種工作模式。M CP2515的正常工作關(guān)鍵在于對其進(jìn)行初始化處理,在初始化之前,首先必須通過TMS320F2812給MCP2515發(fā)送一個(gè)復(fù)位指令,使其進(jìn)入配置模式,然后才能對其進(jìn)行初始化。MCP2515的初始化還包括設(shè)置波特率寄存器、設(shè)置發(fā)送/接收控制寄存器、設(shè)置驗(yàn)收屏蔽/濾波寄存器等。
3.2 MCP2515的數(shù)據(jù)接收
MCP2515的RXB0和RXB1兩個(gè)全接收緩沖器均配備一個(gè)驗(yàn)收屏蔽寄存器和兩個(gè)驗(yàn)收濾波寄存器。RXB0比RXB1具有更高的優(yōu)先級。當(dāng)系統(tǒng)有報(bào)文數(shù)據(jù)時(shí),如果CANINTE.RXnIE的相應(yīng)位被置1,MCP2515的INT管腳會(huì)產(chǎn)生一個(gè)巾斷信號(hào),顯示有報(bào)文收到,與其對應(yīng)的接收緩沖器的CANI NTF.RxnIF位將置位,接收緩沖器中的報(bào)文只要接收處理完畢,TMS320F2812就應(yīng)當(dāng)立即清零該位以準(zhǔn)備接收下一條報(bào)文。
3.3 MCP2515的數(shù)據(jù)發(fā)送
MCP2515的3個(gè)發(fā)送緩沖器均有一個(gè)TxBnCTRL寄存器控制報(bào)文的發(fā)送條件、對應(yīng)的發(fā)送優(yōu)先級以及報(bào)文發(fā)送時(shí)的狀態(tài)。在寫入發(fā)送緩沖器之前,必須將TxBnCTRL TXREQ位清零,確保發(fā)送緩沖器中沒有等待發(fā)送的報(bào)文。通過TxBnCTRL TXREQ位置1,可以啟動(dòng)相應(yīng)的發(fā)送緩沖器準(zhǔn)備發(fā)送報(bào)文,一旦檢測到總線空閑時(shí),就會(huì)啟動(dòng)報(bào)文發(fā)送。報(bào)文發(fā)送成功TxBnCTRL.TXREQ位清零,CANINTF TXnIF置位,如果同時(shí)ANINTE.Txn IE被置位,則會(huì)產(chǎn)生發(fā)送中斷。
評論