<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機和MCP2510的CAN總線通信模塊設(shè)計

          單片機和MCP2510的CAN總線通信模塊設(shè)計

          作者: 時間:2012-04-07 來源:網(wǎng)絡(luò) 收藏

          單片機和MCP2510的CAN總線通信模塊設(shè)計

          圖7 軟件主體設(shè)計流程圖

          本文中主要采取中斷模式進行總線數(shù)據(jù)的接收和發(fā)送。整個系統(tǒng)主序提供兩種中斷: 定時器中斷和外部中斷。定時器中斷的中斷子程序主要負責處理來自模擬通道AIN0~AIN7的A/D數(shù)據(jù),向發(fā)送“數(shù)據(jù)發(fā)送請求命令”以及發(fā)送數(shù)據(jù)。外部中斷的中斷處理子程序主要包括錯誤處理子程序和數(shù)據(jù)接收子程序。

          2.2 軟件主體設(shè)計流程

          軟件主體設(shè)計流程如圖7所示。軟件設(shè)計時需要注意以下問題:

          ① 因為 在初始化完成后處于默認Configuration模式下,所以就需要在MCP2510的初始化完后將其置為 Normal模式,否則MCP2510將一直停留在Configuration 模式下,不能正常進行工作。將MCP2510置Normal模式可通過使用 MCP2510內(nèi)置的BitModify(位修改)4指令向CANCTRL控制字寫入一個0字節(jié)來實現(xiàn)。

          ② 在對MCP2510進行任何操作之前,都要由微處理器向MCP2510的片選CS輸出一個低電平,使得MCP2510選通。

          ③ 在執(zhí)行MCP2510的“讀”操作時,發(fā)送完讀指令及其地址碼之后,仍然需要向MCP2510提供時鐘,以接收“讀”到的數(shù)據(jù)??梢酝ㄟ^向MCP2510發(fā)送一個0字節(jié)來實現(xiàn)。

          ④ 在對MCP2510完成任意操作后,都要延時一段時間,使其有足夠的時間來準備接收下次操作的命令,防止出現(xiàn)MCP2510“忙”的情況。

          3 總結(jié)

          已被公認為是最有前途的幾種現(xiàn)場總線之一。因其性價比高、實現(xiàn)簡單等突出優(yōu)點深受越來越多的研發(fā)人員的青睞。本文的智能節(jié)點可聯(lián)結(jié)多個集散控制系統(tǒng),其軟硬件電路的設(shè)計方法同樣適合于其他基于的分布式控制系統(tǒng)的節(jié)點設(shè)計。

          參考文獻

          [1] 鄔寬明. CAN總線原理和應(yīng)用系統(tǒng)設(shè)計[M]. 北京:北京航空航天大學出版社,1996.

          [2] Microchip. MCP2510 DataSheet,2002.

          [3] 王繼國,新亞. CAN控制器芯片MCP2510在遠程監(jiān)測系統(tǒng)中的應(yīng)用[J].電子技術(shù)應(yīng)用,2004(4).

          [4] 蔡美琴,張為民,何金兒,等. MCS51系列系統(tǒng)及其應(yīng)用[M]. 第2版. 北京: 高等教育出版社,2004.

          楊慶華(碩士研究生),主要研究方向為計算機測控;張景元(教授),主要研究方向為人工智能、模式識別、信息處理和智能控制。


          上一頁 1 2 3 4 下一頁

          關(guān)鍵詞: 單片機 MCP2510 CAN總線

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();