CAN智能節(jié)點(diǎn)的設(shè)計(jì)
MCP25101是Microchip公司推出的功能很強(qiáng)的CAN控制器芯片,它支持CAN1.2、2.0A及2.0B規(guī)范;其內(nèi)部結(jié)構(gòu)見圖3所示。該芯片內(nèi)含3個(gè)發(fā)送緩存和2個(gè)接收緩存,可以對發(fā)送優(yōu)先級進(jìn)行管理,可濾除無用信息,MCP2510有6個(gè)可編程濾波器,而且中斷資源十分豐富。最可貴的是,它可以通過標(biāo)準(zhǔn)的SPI接口與微控制器進(jìn)行通信,從而放寬了MCU的選擇范圍使得所有單片機(jī)都有接入的可能。
MCP2510的主要功能是在MCU的控制下實(shí)現(xiàn)CAN規(guī)范,它內(nèi)部的所有寄存器和控制寄存器都映射到一個(gè)地址表上,MCU可以使用相應(yīng)的命令格式通過標(biāo)準(zhǔn)的SPI接口來完成對MCP2510的初始化、工作狀態(tài)的控制以及數(shù)據(jù)的讀寫。此外,MCP2510產(chǎn)生的中斷還可以反饋給MCU來處理。
2.3 系統(tǒng)時(shí)鐘
此外,由于MCP2510的輸出信號驅(qū)動(dòng)能力不夠,而且與CAN總線物理接口的要求存在很大的差異,所以,在實(shí)際應(yīng)用中必須使用CAN收發(fā)器(如MCP2551等),它可支持的CAN速率最高可達(dá)1Mbps,而且容錯(cuò)能力很強(qiáng)。此外,它內(nèi)部還有很強(qiáng)的保護(hù)電路,可以防止總線的其它節(jié)點(diǎn)對它的影響。
3 軟件設(shè)計(jì)
在進(jìn)行本系統(tǒng)節(jié)點(diǎn)的軟件設(shè)計(jì)前,首先簡要說明一下MCP2510的指令格式,MCP2510的5條指令如表1所列。
表1 MCP2510指令格式
指 令 | 指令格式 | 說 明 |
復(fù)位 | 1100 0000 | 使內(nèi)部寄存器復(fù)位,進(jìn)入配置模式 |
讀取 | 0000 0011 | 從寄存器讀取數(shù)據(jù),指令在前,地址隨后 |
寫入 | 0000 0010 | 寫數(shù)據(jù)到寄存器,指令在前,地址和數(shù)據(jù)隨后 |
發(fā)送請求 | 1000 0nnn | 對發(fā)送緩存發(fā)送信息進(jìn)行初始化 |
狀態(tài)讀取 | 1010 0000 | 讀取常用狀態(tài)寄存器的某些位數(shù)據(jù) |
位修改 | 0000 0101 | 對豁口的某幾件位修改 |
在使用時(shí),可以把這些指令直接編寫成函數(shù)形式,這樣可使程序簡練易讀。同時(shí),發(fā)送請求的硬件觸發(fā)只需把TXnRTS置低即可。實(shí)際上,接收緩存收到信息后也能產(chǎn)生硬件觸發(fā),并在TXnRTS引腳產(chǎn)生低電平輸出。
本設(shè)計(jì)的主程序流程圖如圖4所示。
上電復(fù)位后,MSP430首先完成自身外圍模塊的初始化,其任務(wù)主要是選擇時(shí)鐘模塊中的時(shí)鐘、使USART模塊工作于SPI模式、以及對看門狗定時(shí)器的配置等;然后對MCP2510進(jìn)行初始化,以對寄存器進(jìn)行設(shè)置。需要注意的是,MCP2510只有在配置模式下才可以對控制參數(shù)進(jìn)行配置,但它在復(fù)位以后就是配置模式。
當(dāng)配置MCP2510到環(huán)回模式后,MSP430將寫數(shù)據(jù)到MCP2510的發(fā)送緩存并控制其發(fā)送,此后,在接收緩存收到數(shù)據(jù)后,INT引腳將產(chǎn)生低電平中斷以通知MSP430,MSP430響應(yīng)中斷后將讀取數(shù)據(jù),并和發(fā)送的數(shù)據(jù)進(jìn)行比較,以驗(yàn)證程序的可行性。需要注意的是,無論是對MCP2510的讀還是寫,都必須使它的CS引腳處于低電平。
在實(shí)際應(yīng)用中,MSP430和MCP2510都可以進(jìn)入睡眠模式,并可以由中斷來激活。整個(gè)節(jié)點(diǎn)的主要功能均由中斷子程序來完成,其中的一部分是MSP430自身的中斷(看門狗定時(shí)器溢出中斷、SPI接收發(fā)送中斷、ADC中斷等),另一部分是MCP2510引起的中斷,這部分中斷資源十分豐富,包括信息接收發(fā)送中斷、信息錯(cuò)誤中斷、總線激活中斷等。它產(chǎn)生的所有中斷都能使INT引腳為低電平, 單片機(jī)在檢測到這些中斷后,將通過SPI接口讀?。停茫校玻担保皟?nèi)部的中斷標(biāo)志寄存器以判斷是何中斷,然后再進(jìn)行進(jìn)一步處理。
4 結(jié)束語
MSP430和MCP2510的很多實(shí)用功能本文還沒有進(jìn)一步開發(fā),只是作了一個(gè)簡單測試系統(tǒng),而且許多實(shí)際應(yīng)用中需要注意的問題也沒有考慮到,需要進(jìn)一步完善。此外,由于MCP2510使用標(biāo)準(zhǔn)的SPI接口與單片機(jī)通信,所以加上它可以不更換單片機(jī),而只需對程序稍作修改即可,因此,采用該方案幾乎可以在任何現(xiàn)有系統(tǒng)上實(shí)現(xiàn)CAN總線功能。
評論