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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于CAN總線的87C196CA在單片機串行通訊的應用

          基于CAN總線的87C196CA在單片機串行通訊的應用

          作者: 時間:2012-05-22 來源:網(wǎng)絡 收藏

          1 前言

            CAN 是國際上應用很廣泛的一種現(xiàn)場總線,MCS96 系列單片機是目前在工業(yè)界推廣應用較廣泛的嵌入式控制器,其 單片機內(nèi)核本身帶有CAN 控制器,支持標準和擴展的信息幀,即遵循CAN2.0A 和CAN2.0B 協(xié)議。由此而構(gòu)成的CAN 總線支持分布式控制和實時控制,其串行通信方式靈活可靠,傳輸距離較遠。由于CAN 總線具有通信速率高、工作可靠性高、現(xiàn)場抗干擾能力強、網(wǎng)絡連接方便和性能價格比高等優(yōu)點,在汽車發(fā)動機控制部件、汽車抗滑系統(tǒng)、工業(yè)自動化、機床、電梯控制等領域得到了較為廣泛的應用。

          2 硬件構(gòu)成

            2. 1 CAN 總線連接

            基于CAN 總線的兩個87C196 單片機網(wǎng)絡聯(lián)接時,分別將單片機的CAN接收、發(fā)送兩根線通過PCA82C250 收發(fā)器聯(lián)接到上,構(gòu)成多微控制器連接。通信介質(zhì)可以是雙絞線、同軸電纜或光纖,其總線連接如圖1 所示。


            該網(wǎng)絡最高通信速率為1Mbit/s ,當傳輸速率為5Kbit/s時,最大通信距離可達10Km。在其CAN 總線上可掛接多達110 個網(wǎng)絡節(jié)點,而網(wǎng)絡上任意一個節(jié)點均可以在任意時刻主動地向網(wǎng)絡上的其他節(jié)點發(fā)送信息。其數(shù)據(jù)傳輸和接收可以是點對點、一點對多點或全局廣播等方式進行。

            2. 2   單片機

             是集成CAN2.0B總線控制器的高性能16 位微處理器,特別適用于現(xiàn)場實時事件控制和分布式控制。片內(nèi)的CAN 控制器與Intel 82527獨立CAN 控制器在軟件上是兼容的,每個CAN 控制器的輸入、輸出引腳由二根雙絞線聯(lián)接到CAN總線上。CAN 控制器由一個輸入引腳(RXCAN) 、一個輸出引腳( TXCAN) 、控制和狀態(tài)寄存器,錯誤探測和管理邏輯組成。圖2 為CAN 控制器方框圖。

            2. 3  CAN 總線收發(fā)器

            PCA82C250 是CAN協(xié)議控制器和物理傳輸線路之間的接口,是影響網(wǎng)絡性能的關鍵因素。它對總線提供差動發(fā)送能力,并對CAN控制器提供差動接收能力,其最高傳輸速率可達1Mbit/s。其主要特點是芯片內(nèi)部具有限流電路,可以防止輸出級對電源、地或負載短路;由于采用差動接收發(fā)方式,因此有較強的抗電磁干擾能力;具有低電流節(jié)電待機工作模式;該CAN總線收發(fā)器至少可以連接110個節(jié)點。利用PCA82C250還可以方便地在CAN控制器與驅(qū)動器之間建立光電隔離, 以實現(xiàn)總線上各節(jié)點間的電氣隔離。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

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