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

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > 基于STC89C51的CAN總線點對點通信模塊設計

          基于STC89C51的CAN總線點對點通信模塊設計

          作者: 時間:2010-08-11 來源:網(wǎng)絡 收藏

          光耦隔離器可對上各個節(jié)點進行電氣隔離,以增強系統(tǒng)的可靠性,減少系統(tǒng)與系統(tǒng)之間的相互影響。
          2.1 控制器硬件電路的
          將SJAl000的ADO~AD7連接到STC89C5l的P0口,CS連接到STC89C5l的P20,這樣,當P20為O時,CPU片外存儲器地址即可選中SJAl000,CPU
          則通過這些地址對SJAl000執(zhí)行相應的讀寫操作。時,可將SJAl000的RD、WR、ALE分別和STC89C5l的對應引腳相連,INT接的IN-T0,這樣,CPU可以通過中斷方式來訪問SJAl000。其連接電路圖如圖2所示。

          本文引用地址:http://www.ex-cimer.com/article/157240.htm


          2.2 光電耦合器的
          為了增強節(jié)點的抗干擾能力,SJAl000的TX0和RX0并不直接和收發(fā)器PCA82C250的TXD和RXD相連,而是通過高速光耦6N137后再和PCA82C250相連,這樣就可以很好的實現(xiàn)各CAN節(jié)點間的電氣隔離。應當注意的是光耦部分采用的電源VCC和VDD最好完全隔離,可以用小功率的電源隔離來實現(xiàn),這樣就可以提高節(jié)點的穩(wěn)定性和安全性。其電路圖如圖3所示。


          2.3 CAN收發(fā)器的設計
          PCA82C250是一種差分收發(fā)器,它可完成TTL電平到差分信號的轉(zhuǎn)換。它的CANH和CANL引腳各自通過一個5 Ω的電阻和CAN相連,該電阻可以起到一定的限流作用,可保護PCA82C250免受過流的沖擊。而CANH和CANL與地并聯(lián)了兩個30pF的小電容??梢赃^濾總線上的高頻干擾并具有一定的防電磁輻射能力。PCA82C250的RS腳上應接一個斜率電阻,電阻大小可根據(jù)總線速度適當調(diào)節(jié),一般可在16~140 kΩ之間,這里選用47 kΩ電阻。圖4所示是收發(fā)器的電路圖。


          2.4 總體電路分析
          由于本設計將SJAl000的AD0~AD7和STC89C5l的P0口相連,CS連接到P20口,ALE、WE、RD分別與單片機的對應各口相連,因此,SJAl000就相當于單片機的外部存儲器。訪問SJAl000的寄存器就相當于對外部寄存器地址進行讀寫操作。SJAl000的MODE接高電平,采用的是intel二分頻模式,TXO和RX0通過高速光耦器件6N137與CAN收發(fā)器82C250連接,PCA82C250的TXD和RXD引腳分別接發(fā)送和接收驅(qū)動信號,然后通過CANH和CANL接至物理總線傳輸介質(zhì)上,這個介質(zhì)可以是光纖或雙膠線等。

          數(shù)字通信相關(guān)文章:數(shù)字通信原理




          評論


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