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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 安全與國防 > 設(shè)計應(yīng)用 > 一種基于CAN總線的客房通信控制器的設(shè)計

          一種基于CAN總線的客房通信控制器的設(shè)計

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


            接口電路主要由CANSJA1000、高速光耦6N137和驅(qū)動器82C250組成。SJA1000作為協(xié)議轉(zhuǎn)換的控制器,它內(nèi)建BASIC CAN協(xié)議,并提供對CAN2.0B協(xié)議的支持。通過對片內(nèi)寄存器的讀、寫操作,主控制器單片機能夠設(shè)置CAN總線通信模式,實現(xiàn)數(shù)據(jù)的發(fā)送與接收。

            SJA1000在邏輯上實現(xiàn)了傳輸數(shù)據(jù)的編碼和解碼,若要與物理線路連接,還必須借助總線驅(qū)動器82C250,以增強CAN總線的差動發(fā)送和接收驅(qū)動能力。為了增強CAN 總線節(jié)點的抗干擾能力,防止線路間串擾,SJA1000 的TX0 和RXO 并不是直接與82C250 的TXD 和RXD 相連,而是通過高速光耦6N137 后再與82C250 相連;另外,CAN總線驅(qū)動器采用帶隔離的DC/DC模塊單獨供電,實現(xiàn)了與CAN總線的隔離,提高系統(tǒng)的可靠性。

            82C250的CANH和CANL引腳各自通過一熱敏電阻與CAN總線相連,當過流時電阻發(fā)熱阻值變大,保護82C250免受過流的沖擊。CANH和CANL與地之間并聯(lián)兩個小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力。

            RS232接口電路主要用于主控制器單片機與管理層中央服務(wù)器的雙向數(shù)據(jù)傳送。由于采用了標準的RS232串行通信,結(jié)構(gòu)簡單、成本低。

            控制器的其它外圍電路還有電源模塊、非易失性EEPROM存儲器、時鐘保持電路、LED指示燈和看門狗等。非易失性EEPROM存儲器采用具有2KB容量的AT24C02,用于保存系統(tǒng)配置參數(shù)及各節(jié)點的最新信息,便于管理層的查詢。時鐘保持電路選用涓流充電時鐘芯片DS1302,其內(nèi)部含有實時時鐘和日歷,通過簡單的串行接口與單片機進行通信,用于給各節(jié)點控制器校時。同時,控制器還配置了4個LED指示燈,分別用于系統(tǒng)上電、CAN通信、RS232通信和系統(tǒng)通信故障的指示,以方便系統(tǒng)的調(diào)試和對控制器運行狀況的監(jiān)測。

          4 系統(tǒng)軟件

            CAN的主要任務(wù)是過濾信息量,將現(xiàn)場層信息上傳給管理層,同時接收管理層的控制指令,對記錄數(shù)據(jù)或各CAN節(jié)點進行操作。CAN通信控制器同時還具有數(shù)據(jù)記錄和零點校時功能。因而控制器軟件設(shè)計主要包括四大部分:CAN通信、RS232通信、EEPROM數(shù)據(jù)的讀寫和系統(tǒng)時鐘DS1302的讀寫。其程序主流程圖如圖3所示。



          評論


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