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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于CAN總線的家庭控制器的設(shè)計與實現(xiàn)

          基于CAN總線的家庭控制器的設(shè)計與實現(xiàn)

          作者: 時間:2009-12-10 來源:網(wǎng)絡(luò) 收藏

            在數(shù)據(jù)鏈路層中,規(guī)定了支持協(xié)議的兩種幀類型:數(shù)據(jù)幀和遠程幀。數(shù)據(jù)幀用來發(fā)送數(shù)據(jù),用于一個節(jié)點傳送信息到其它任一或所有節(jié)點;遠程幀用來“遠程發(fā)送請求”,用于一個節(jié)點主動要求其它節(jié)點發(fā)送信息,兩種幀的具體格式如圖2所示。

          幀的具體格式

            硬件電路

            硬件

            本系統(tǒng)是由許多智能通過相連而組成的一個局部網(wǎng),因此,就顯得極為重要。其中,CAN控制器的選取、CAN收發(fā)器以及抗干擾措施將成為設(shè)計的關(guān)鍵。

           ?、貱AN控制器的選取

            為了系統(tǒng)進一步擴展的需要,可選取支持CAN2.0B通信協(xié)議的SJA1000。SJA1000是PHILIPS公司最新生產(chǎn)的既支持CAN2.0B又支持 CAN2.0A的CAN控制器,它與僅支持CAN2.0A的CAN控制器PCA82C200在硬件上和軟件上完全兼容。

           ?、贑AN收發(fā)器

            PCA82C250是PHILIPS公司的CAN控制器和物理間的接口,提供對總線的差動發(fā)送和接收能力。它與ISO11898標(biāo)準(zhǔn)完全兼容,有三種不同的工作方式即高速、斜率控制和待機,可根據(jù)實際情況選擇。

           ③光電隔離
            為了進一步提高系統(tǒng)的抗干擾能力,在控制器SJA1000和收發(fā)器PCA82C250之間增加了由高速隔離器件6N137構(gòu)成的隔離電路,電源采用DC-DC變換器。


            硬件電路中使用PCA82C250是為了增大通信距離,提高系統(tǒng)的瞬間抗干擾能力,保護總線,降低射頻干擾(RFI),熱防護等。

            CAN器件與微處理器的硬件結(jié)構(gòu)圖如圖3所示。

          CAN器件與微處理器的硬件結(jié)構(gòu)圖

          CAN接口適配卡和CAN總線中繼器

            CAN接口適配卡完成CAN-PC總線的通信。適配卡由單片機89C51、CAN控制器SJA100、CAN收發(fā)器89C250及其控制電路組成。

            由于CAN收發(fā)器的限制,在一個CAN總線網(wǎng)絡(luò)中,最多只能有110個CAN節(jié)點,最多只能有110個CAN節(jié)點。利用中繼器可對CAN總線進行擴展,不但可使CAN節(jié)點總數(shù)達到2032個,而且可使CAN通信距離成倍增加,同時也可以把兩個不同速率的CAN網(wǎng)連接在一起,組成更復(fù)雜的CAN網(wǎng)絡(luò)。



          評論


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