單片機(jī)和MCP2510的CAN總線通信模塊設(shè)計
圖7 軟件主體設(shè)計流程圖
本文中MCP2510主要采取中斷模式進(jìn)行總線數(shù)據(jù)的接收和發(fā)送。整個系統(tǒng)主序提供兩種中斷: 定時器中斷和外部中斷。定時器中斷的中斷子程序主要負(fù)責(zé)處理來自模擬通道AIN0~AIN7的A/D數(shù)據(jù),向MCP2510發(fā)送“數(shù)據(jù)發(fā)送請求命令”以及發(fā)送數(shù)據(jù)。外部中斷的中斷處理子程序主要包括CAN總線錯誤處理子程序和數(shù)據(jù)接收子程序。
2.2 軟件主體設(shè)計流程
軟件主體設(shè)計流程如圖7所示。軟件設(shè)計時需要注意以下問題:
① 因為 MCP2510在初始化完成后處于默認(rèn)Configuration模式下,所以就需要在MCP2510的初始化完后將其置為 Normal模式,否則MCP2510將一直停留在Configuration 模式下,不能正常進(jìn)行工作。將MCP2510置Normal模式可通過使用 MCP2510內(nèi)置的BitModify(位修改)4指令向CANCTRL控制字寫入一個0字節(jié)來實現(xiàn)。
② 在對MCP2510進(jìn)行任何操作之前,都要由微處理器向MCP2510的片選CS輸出一個低電平,使得MCP2510選通。
③ 在執(zhí)行MCP2510的“讀”操作時,發(fā)送完讀指令及其地址碼之后,仍然需要向MCP2510提供時鐘,以接收“讀”到的數(shù)據(jù)??梢酝ㄟ^向MCP2510發(fā)送一個0字節(jié)來實現(xiàn)。
④ 在對MCP2510完成任意操作后,都要延時一段時間,使其有足夠的時間來準(zhǔn)備接收下次操作的命令,防止出現(xiàn)MCP2510“忙”的情況。
3 總結(jié)
CAN總線已被公認(rèn)為是最有前途的幾種現(xiàn)場總線之一。因其性價比高、實現(xiàn)簡單等突出優(yōu)點深受越來越多的研發(fā)人員的青睞。本文的智能節(jié)點可聯(lián)結(jié)多個集散控制系統(tǒng),其軟硬件電路的設(shè)計方法同樣適合于其他基于CAN總線的分布式控制系統(tǒng)的節(jié)點設(shè)計。
參考文獻(xiàn)
[1] 鄔寬明. CAN總線原理和應(yīng)用系統(tǒng)設(shè)計[M]. 北京:北京航空航天大學(xué)出版社,1996.
[2] Microchip. MCP2510 DataSheet,2002.
[3] 王繼國,新亞. CAN控制器芯片MCP2510在遠(yuǎn)程監(jiān)測系統(tǒng)中的應(yīng)用[J].電子技術(shù)應(yīng)用,2004(4).
[4] 蔡美琴,張為民,何金兒,等. MCS51系列單片機(jī)系統(tǒng)及其應(yīng)用[M]. 第2版. 北京: 高等教育出版社,2004.
楊慶華(碩士研究生),主要研究方向為計算機(jī)測控;張景元(教授),主要研究方向為人工智能、模式識別、信息處理和智能控制。
評論