CAN(Controller Area Network)總線(xiàn),即控制器局域網(wǎng)。由于具有高性能、高可靠性以及獨(dú)特的設(shè)計(jì),CAN總線(xiàn)越來(lái)越受到人們的重視。德國(guó)的Bosch公司最初為汽車(chē)監(jiān)控和控制系統(tǒng)設(shè)計(jì)了CAN總線(xiàn),現(xiàn)在,其應(yīng)用已面向過(guò)程工業(yè)、機(jī)械工業(yè)、紡織工業(yè)、農(nóng)用機(jī)械、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械及傳感器等領(lǐng)域發(fā)展。CAN總線(xiàn)已經(jīng)形成國(guó)際標(biāo)準(zhǔn),并已經(jīng)公認(rèn)為是最有前途的現(xiàn)場(chǎng)總線(xiàn)之一。CAN總線(xiàn)規(guī)范已經(jīng)被國(guó)際標(biāo)準(zhǔn)化組織制訂為國(guó)際標(biāo)準(zhǔn)ISOll898,并得到眾多半導(dǎo)體器件廠商的支持,推出各種集成有CAN協(xié)議的產(chǎn)品。CAN總線(xiàn)系統(tǒng)智能節(jié)點(diǎn)是網(wǎng)絡(luò)上報(bào)文的接收和發(fā)送站,一般由單片機(jī)和CAN控制器或二者合二為一組成。 MCP2510是Microchip公司生產(chǎn)的一種獨(dú)立的可編程CAN控制器芯片。本文將介紹新型的獨(dú)立CAN通信控制器MCP2510,并給出其在CAN總線(xiàn)系統(tǒng)智能節(jié)點(diǎn)中的應(yīng)用實(shí)例。 1 MCP2510芯片介紹 MCP2510是一種帶有SPI接口的CAN控制器,DIP封裝如圖l所示。它支持CAN技術(shù)規(guī)范V2.OA/B。能夠發(fā)送或接收標(biāo)準(zhǔn)的和擴(kuò)展的信息幀,同時(shí)具有接收濾波和信息管理的功能。MCP2510通過(guò)SI接口與MCU進(jìn)行數(shù)據(jù)傳輸,最高數(shù)據(jù)傳輸速率可達(dá)5Mbps,MCU可通過(guò)MCP2510與CAN總線(xiàn)上的其他MCU單元通信。MCP25lO內(nèi)含3個(gè)發(fā)送緩沖器和2個(gè)接收緩沖器,同時(shí)還具有靈活的中斷管理能力,這些特點(diǎn)使得MCU對(duì)CAN總線(xiàn)的操作變得非常簡(jiǎn)便。 1.1 MCP2510的主要特點(diǎn)
1.2 結(jié)構(gòu)及工作原理 MCP25lO有PDIP、SOIC和TSSOP三種封裝形式。圖2是MCP2510的內(nèi)部結(jié)構(gòu)框圖。CAN協(xié)議機(jī)負(fù)責(zé)與CAN總線(xiàn)的接口,SPI接口邏輯用于實(shí)現(xiàn)同MCU的通信,而寄存、緩沖器組與控制邏輯則用來(lái)完成各種方式的設(shè)定和操作控制。現(xiàn)結(jié)合其工作過(guò)程將各部分的功能、原理作一介紹。 (1)收發(fā)操作 MCP2510的發(fā)送操作通過(guò)3個(gè)發(fā)送緩沖器來(lái)實(shí)現(xiàn)。這3個(gè)發(fā)送緩沖器各占據(jù)14字節(jié)的SRAM。第1字節(jié)是控制寄存器TXBNCTRL,該寄存器用來(lái)設(shè)定信息發(fā)送的條件,且給出了信息的發(fā)送狀態(tài);第2~6字節(jié)用來(lái)存放標(biāo)準(zhǔn)的和擴(kuò)展的標(biāo)識(shí)符以及仲裁信息;最后8字節(jié)則用來(lái)存放待發(fā)送的數(shù)據(jù)信息。在進(jìn)行發(fā)送前,必須先對(duì)這些寄存器進(jìn)行初始化。 (2)中斷管理 MCP2510有8個(gè)中斷源,包括發(fā)送中斷、接收中斷、錯(cuò)誤中斷及總線(xiàn)喚醒中斷等。利用中斷使能寄存器(CANINTE)和中斷屏蔽寄存器(CANINTF)可以方便地實(shí)現(xiàn)對(duì)各種中斷的有效管理。當(dāng)有中斷發(fā)生時(shí),INT引腳變?yōu)榈碗娖讲⒈3衷诘碗娖剑钡組CU清除中斷為止。 (3)錯(cuò)誤檢測(cè) CAN協(xié)議具有CRCF錯(cuò)誤、應(yīng)答錯(cuò)誤、形式錯(cuò)誤、位錯(cuò)誤和填充錯(cuò)誤等檢測(cè)功能。MCP2510內(nèi)含接收出錯(cuò)計(jì)數(shù)器(REC)和發(fā)送出錯(cuò)計(jì)數(shù)器(TEC)兩個(gè)錯(cuò)誤計(jì)數(shù)器。因而對(duì)網(wǎng)絡(luò)中的任何一個(gè)節(jié)點(diǎn)來(lái)說(shuō),都有可能因?yàn)殄e(cuò)誤計(jì)數(shù)器的數(shù)值不同而使其處于錯(cuò)誤一激話(huà)、錯(cuò)誤一認(rèn)可和總線(xiàn)一脫離3種狀態(tài)之一。 2 MCP2510在智能節(jié)點(diǎn)中的應(yīng)用實(shí)例 利用MCP2510和CAN總線(xiàn)收發(fā)器TJAl050可構(gòu)成一個(gè)CAN總線(xiàn)分布式測(cè)控網(wǎng)絡(luò)。系統(tǒng)可包括一個(gè)主控制器和多個(gè)節(jié)點(diǎn)控制器,這種節(jié)點(diǎn)控制器可對(duì)電動(dòng)機(jī)的電流、電壓及周?chē)臏囟冗M(jìn)行監(jiān)控,其結(jié)構(gòu)如圖3所示。 這種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用了總線(xiàn)式結(jié)構(gòu)和無(wú)源抽頭連接,且結(jié)構(gòu)簡(jiǎn)單、成本低,因而系統(tǒng)的可靠性較高。其信息傳輸采用CAN通信協(xié)議,通信介質(zhì)采用雙絞線(xiàn)。由于CAN總線(xiàn)是基于發(fā)送報(bào)文的編碼,不對(duì)CAN控制節(jié)點(diǎn)進(jìn)行編碼,故系統(tǒng)的可擴(kuò)充性比較好,同時(shí)增刪CAN總線(xiàn)上的控制節(jié)點(diǎn)不會(huì)對(duì)系統(tǒng)的其余節(jié)點(diǎn)造成任何影響。 節(jié)點(diǎn)控制器的MCU可選用具有SPI接口的微處理器,也可采用不帶SPI接口的微處理器。本系統(tǒng)采用的是不帶SPI接口的微處理器AT89C5l。AT89C51可通過(guò)P1口與CAN控制器的SPI接口直接相連,并用軟件算法來(lái)實(shí)現(xiàn)SPI接口協(xié)議。CAN總線(xiàn)收發(fā)器TJAl050則作為MCP2510與物理總線(xiàn)的接口。如果需要進(jìn)一步提高系統(tǒng)的抗干擾能力,則可在MCP2510和TJAl050之間再加一個(gè)光電隔離器。 智能節(jié)點(diǎn)電路原理圖如圖4所示。 |