基于單片機(jī)和MCP2510的CAN總線通信模塊的設(shè)計(jì)
1 前言
CAN(Controller Area Network)總線,即控制器局域網(wǎng)。由于具有高性能、高可靠性以及獨(dú)特的設(shè)計(jì),CAN總線越來越受到人們的重視。德國(guó)的Bosch公司最初為了汽車監(jiān)控和控制系統(tǒng)設(shè)計(jì)了CAN總線,現(xiàn)在,其應(yīng)用范圍已面向過程工業(yè)、機(jī)械工業(yè)、紡織工業(yè)、農(nóng)用機(jī)械、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械及傳感器等領(lǐng)域發(fā)展。CAN 總線已經(jīng)形成國(guó)際標(biāo)準(zhǔn),并已經(jīng)被公認(rèn)為最有前途的現(xiàn)場(chǎng)總線之一。CAN總線規(guī)范已經(jīng)被國(guó)際標(biāo)準(zhǔn)化組織制訂為國(guó)際標(biāo)準(zhǔn)ISO11898,并得到眾多半導(dǎo)體器件廠商的支持,推出各種集成有CAN協(xié)議的產(chǎn)品。CAN總線系統(tǒng)智能節(jié)點(diǎn)是網(wǎng)絡(luò)上報(bào)文的接收&發(fā)送站,一般由單片機(jī)和CAN控制器或二者合二為一組成。 MCP2510是MicroChip成產(chǎn)的一種獨(dú)立的可編程CAN控制器芯片。本文將介紹新型的獨(dú)立CAN通信控制器MCP2510,并給出在CAN總線系統(tǒng)智能節(jié)點(diǎn)中的應(yīng)用實(shí)例。
2 M
(7) 工作溫度范圍為-40~+125℃。
2.3 結(jié)構(gòu)及工作原理
圖2是MCP2510的內(nèi)部結(jié)構(gòu)框圖,其中CAN協(xié)議機(jī)負(fù)責(zé)與CAN總線的接口,SPI接口邏輯用于實(shí)現(xiàn)同MCU的通訊,而寄存、緩沖器組與控制邏輯則用來完成各種方式的設(shè)定和操作控制?,F(xiàn)結(jié)合其工作過程將各部分的功能、原理作一介紹。
(1)收發(fā)操作
MCP2510的發(fā)送操作通過三個(gè)發(fā)送緩沖器來實(shí)現(xiàn)。這三個(gè)發(fā)送緩沖器各占據(jù)14個(gè)字節(jié)的SRAM。第一字節(jié)是控制寄存器TXBNCTRL,該寄存器里的內(nèi)容設(shè)定了信息發(fā)送的條件,且給出了信息的發(fā)送狀態(tài);第二至第六字節(jié)用來存放標(biāo)準(zhǔn)的和擴(kuò)展的標(biāo)識(shí)符以及仲裁信息;最后八個(gè)字節(jié)則用來存放待發(fā)送的數(shù)據(jù)信息。在進(jìn)行發(fā)送前,必須先對(duì)這些寄存器進(jìn)行初始化。
(2)中斷管理
MCP2510有8個(gè)中斷源,包括發(fā)送中斷、接收中斷、錯(cuò)誤中斷及總線喚醒中斷等。利用中斷使能寄存器CANINTE和中斷屏蔽寄存器CANINTF可以方便地實(shí)現(xiàn)對(duì)各種中斷的有效管理。當(dāng)有中斷發(fā)生時(shí),INT引腳變?yōu)榈碗娖讲⒈3衷诘碗娖?,直到MCU清除中斷為止。
(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)來說,都有可能因?yàn)殄e(cuò)誤計(jì)數(shù)器的數(shù)值不同而使其處于錯(cuò)誤-激活、錯(cuò)誤-認(rèn)可和總線-脫離三種狀態(tài)之一
3 MCP2510在智能節(jié)點(diǎn)中的應(yīng)用實(shí)例
利用MCP2510和CAN總線收發(fā)器TJA1050可構(gòu)成一個(gè)CAN總線分布式測(cè)控網(wǎng)絡(luò)。系統(tǒng)可包括一個(gè)主控制器和多個(gè)節(jié)點(diǎn)控制器,這種節(jié)點(diǎn)控制器可對(duì)電動(dòng)機(jī)的電流,電壓及周圍的溫度進(jìn)行監(jiān)控,其結(jié)構(gòu)如圖3所示。
這種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)采用了總線式結(jié)構(gòu),且結(jié)構(gòu)簡(jiǎn)單、成本低,采用無源抽頭連接。因而系統(tǒng)的可靠性較高。其信息傳輸采用CAN通信協(xié)議,通信介質(zhì)采用雙絞線。由于CAN總線是基于發(fā)送報(bào)文的編碼,它不對(duì)CAN控制節(jié)點(diǎn)進(jìn)行編碼,故系統(tǒng)的可擴(kuò)充性比較好,同時(shí)增刪CAN總線上的控制節(jié)點(diǎn)不會(huì)對(duì)系統(tǒng)的其余節(jié)點(diǎn)造成任何影響。
節(jié)點(diǎn)控制器的MCU可選用具有SPI接口的微處理器,也可采用不帶SPI接口的微處理器。本系統(tǒng)采用的是不帶SPI接口的微處理器 AT89c51,AT89c51可通過P1口與CAN控制器的SPI接口直接相連,并用軟件算法來實(shí)現(xiàn)SPI接口協(xié)議。CAN總線收發(fā)器TJA1050則作為MCP2510與物理總線的接口。如果需要進(jìn)一步提高系統(tǒng)的抗干擾能力,可在MCP2510和82C250之間再加一個(gè)光電隔離器。
3.1軟件設(shè)計(jì)
MCP2510正常工作之前, 需要進(jìn)行正確的初始化,包括設(shè)置SPI接口的數(shù)據(jù)傳輸速率、CAN通信的波特率、MCP2510的接收過濾器和屏蔽器以及發(fā)送&接收中斷允許標(biāo)志位等。與 SJA1000不同的是,單片機(jī)對(duì)MCP2510的接收緩沖器和發(fā)送緩沖器的操作必需通過SPI接口用MCP2510內(nèi)置讀寫命令來完成。其讀、寫命令時(shí)序圖如圖5、6所示:
本文中MCP2510主要采取中斷模式進(jìn)行總線數(shù)據(jù)的接收和發(fā)送。整個(gè)系統(tǒng)主序提供兩種中斷"定時(shí)器中斷和外部中斷",定時(shí)器中斷的中斷子程序主要處理來自模擬通道AIN0~AIN7的A/D數(shù)據(jù)采集和向MCP2510發(fā)送數(shù)據(jù)發(fā)送請(qǐng)求命令以及數(shù)據(jù)發(fā)送。外部中斷的中斷處理子程序主要處理CAN總線錯(cuò)誤處理子程序和數(shù)據(jù)接收子程序。
3.2 軟件主體設(shè)計(jì)流程圖如下
3.3 軟件設(shè)計(jì)時(shí)需要注意的問題:
(1)因?yàn)?MCP2510在初始化完成后默認(rèn)處Configuration模式下,所以就需要在MCP2510的初始化完后將其置為 Normal模式,否則MCP2510將一直停留在Configuration 模 式 下, 不 能 進(jìn) 行 正 常 工作。將MCP2510置Normal模式可通過使用 MCP2510內(nèi)置的BitModify(位修改)4指令向CANCTRL控制字寫入一個(gè)0字節(jié)來實(shí)現(xiàn).
(2)在對(duì)MCP2510做任何操作之前,都要由微處理器向MCP2510的片選CS輸出一個(gè)低電平,使得MCP2510被選通
(3)在進(jìn)行MCP2510的“讀”操作時(shí),發(fā)送完讀指令及其地址碼之后,仍然需要向MCP2510提供時(shí)鐘,以接收“讀”到的數(shù)據(jù)。可以通過向MCP2510發(fā)送一個(gè)“0”字節(jié)來實(shí)現(xiàn)。
(4)在對(duì)MCP2510做完任意操作后,都要延時(shí)一段時(shí)間,使其有足夠的時(shí)間來準(zhǔn)備接收下次操作的命令,防止出現(xiàn)MCP2510“忙”的情況。
4 總結(jié)
CAN總線已被公認(rèn)為是最有前途的幾種現(xiàn)場(chǎng)總線之一。因其高性能價(jià)格比、實(shí)現(xiàn)簡(jiǎn)單等突出優(yōu)點(diǎn)深得越來越多的研發(fā)人員的青睞。文中的智能節(jié)點(diǎn)可聯(lián)結(jié)多個(gè)集散控制系統(tǒng),其硬、軟件電路的設(shè)計(jì)方法同樣適合于其他基于CAN總線的分布式控制系統(tǒng)的節(jié)點(diǎn)設(shè)計(jì)。
參考文獻(xiàn):
[1] 李貌秦霆鎬閆世曉 MCP2515在CAN總線系統(tǒng)智能節(jié)點(diǎn)的應(yīng)用 微計(jì)算機(jī)信息 2005.21-7:37-39
[2] 邵旻. CAN總線綜述
[3]MicroChip mcp2510 datasheet
[4]王繼國(guó),新亞. CAN控制器芯片MCP2510在遠(yuǎn)程監(jiān)測(cè)系統(tǒng)中的應(yīng)用.電子技術(shù)應(yīng)用,2004(4)
[5]蔡美琴,張為民,何金兒等 MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用(第二版)高等教育出版社 2004.6
隔離器相關(guān)文章:隔離器原理
評(píng)論