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