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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于CAN 總線的智能傳感器網(wǎng)絡(luò)

          基于CAN 總線的智能傳感器網(wǎng)絡(luò)

          作者: 時間:2012-03-01 來源:網(wǎng)絡(luò) 收藏


           
          圖3 硬件電路圖

          4 軟件設(shè)計

          作為一個節(jié)點的軟件設(shè)計主要包括兩部分: 一部分為初始化單片機和SJAl000 , 另一部分為節(jié)點實際要完成的數(shù)據(jù)采集和對執(zhí)行機構(gòu)的控制功能。對CAN 控制器的初始化, 對各個寄存器分別寫入不同的內(nèi)容, 其中CAN 控制器與單片機之間采用中斷方式通信。其流程如圖4 所示。
           
          圖4 中斷流程圖

          SJAl000 的初始化程序為:
          MOVA , # 0BH          04H 為ACR 寄存器地址 00H 為CR 寄存器的地址
          MOVDPTR , # 8000H
          MOVX@DPTR , A開放錯誤和接收中斷, 進入復(fù)位模式
          MOVDPTR , # 8004H
          MOVA , # 02H
          MOVX@DPTR , A
          INC DPTR05H 為AMR 寄存器地址。設(shè)為全部收
          MOVA , # FFH
          MOVX@DPTR , A
          INC DPTR
          MOVA , # 01H06H 為BTR0 的寄存器地址
          MOVX@DPTR , A
          INC DPTR
          MOVA , # FFH07H 為BTRl 的寄存器地址, 寫B(tài)TR0 和BTRl , 波特率設(shè)為160K
          MOVX@DPTR , A
          INC DPTR
          MOVA , # 0AH08H 為OCR 寄存器地址, SJAl000 采用正常模式輸出
          MOVX@DPTR , A
          MOVA , # OFH
          MOVDPTR , # 801FH 1FH 為CDR 寄存器地址, 使微控制器與SJAl000 的時鐘相同
          MOVX@DPTR , A
          MOVA , # 0AH
          MOVDPTR , # 8000H
          MOVX@DPTR , A寫CR 寄存器使SJAl000 進入工作模式
          RET

          5 結(jié) 語

          將CAN 總線應(yīng)用于中, 使傳感器獲得的信號能通過總線實時地、可靠地、高速而準(zhǔn)確地進行傳輸。同時, 由于整個網(wǎng)絡(luò)采用全數(shù)字化的通信, 因此總線也具有很好的抗干擾能力, 即使在重負荷下也不會出現(xiàn)網(wǎng)絡(luò)癱瘓的情況, 這些優(yōu)越性能是其它現(xiàn)場總線所不及的。

          上一頁 1 2 下一頁

          評論


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