<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ò) 收藏

          1.2 結(jié)構(gòu)及工作原理

          有PDIP、SOIC和TSSOP三種封裝形式。圖2是的內(nèi)部結(jié)構(gòu)框圖。CAN協(xié)議機負責(zé)與的接口,SPI接口邏輯用于實現(xiàn)同MCU的通信,而寄存、緩沖器組與控制邏輯則用來完成各種方式的設(shè)定和操作控制?,F(xiàn)結(jié)合其工作過程將各部分的功能、原理作一介紹。

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

          圖2 內(nèi)部結(jié)構(gòu)框圖

          (1) 收發(fā)操作

          MCP2510的發(fā)送操作通過3個發(fā)送緩沖器來實現(xiàn)。這3個發(fā)送緩沖器各占據(jù)14字節(jié)的SRAM。第1字節(jié)是控制寄存器TXBNCTRL,該寄存器用來設(shè)定信息發(fā)送的條件,且給出了信息的發(fā)送狀態(tài);第2~6字節(jié)用來存放標(biāo)準(zhǔn)的和擴展的標(biāo)識符以及仲裁信息;最后8字節(jié)則用來存放待發(fā)送的數(shù)據(jù)信息。在進行發(fā)送前,必須先對這些寄存器進行初始化。

          (2) 中斷管理

          MCP2510有8個中斷源,包括發(fā)送中斷、接收中斷、錯誤中斷及總線喚醒中斷等。利用中斷使能寄存器(CANINTE)和中斷屏蔽寄存器(CANINTF)可以方便地實現(xiàn)對各種中斷的有效管理。當(dāng)有中斷發(fā)生時,INT引腳變?yōu)榈碗娖讲⒈3衷诘碗娖?,直到MCU清除中斷為止。

          (3) 錯誤檢測

          CAN協(xié)議具有CRCF錯誤、應(yīng)答錯誤、形式錯誤、位錯誤和填充錯誤等檢測功能。MCP2510內(nèi)含接收出錯計數(shù)器(REC)和發(fā)送出錯計數(shù)器(TEC)兩個錯誤計數(shù)器。因而對網(wǎng)絡(luò)中的任何一個節(jié)點來說,都有可能因為錯誤計數(shù)器的數(shù)值不同而使其處于錯誤激活、錯誤認可和總線脫離3種狀態(tài)之一。

          2 MCP2510在智能節(jié)點中的應(yīng)用實例

          利用MCP2510和收發(fā)器TJA1050可構(gòu)成一個分布式測控網(wǎng)絡(luò)。系統(tǒng)可包括一個主控制器和多個節(jié)點控制器,這種節(jié)點控制器可對電動機的電流、電壓及周圍的溫度進行監(jiān)控,其結(jié)構(gòu)如圖3所示。

          這種網(wǎng)絡(luò)拓撲結(jié)構(gòu)采用了總線式結(jié)構(gòu)和無源抽頭連接,且結(jié)構(gòu)簡單、成本低,因而系統(tǒng)的可靠性較高。其信息傳輸采用CAN通信協(xié)議,通信介質(zhì)采用雙絞線。由于CAN總線是基于發(fā)送報文的編碼,不對CAN控制節(jié)點進行編碼,故系統(tǒng)的可擴充性比較好,同時增刪CAN總線上的控制節(jié)點不會對系統(tǒng)的其余節(jié)點造成任何影響。



          關(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); })();