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

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > 發(fā)電機狀態(tài)監(jiān)測儀中CAN適配卡的設計方案

          發(fā)電機狀態(tài)監(jiān)測儀中CAN適配卡的設計方案

          作者: 時間:2010-03-09 來源:網絡 收藏

          3 伸裁方式

          雙口RAM通信方式的關鍵是處理好爭用現象,避免因此而產生的讀寫錯誤。IDT7132能夠提供硬件判優(yōu)方式,并可利用BUSY引腳的信號來提高系統的靈活性。在圖2的硬件電路中,由于IDT7132內含硬件判優(yōu)電路且兩邊端口都有BUSY引腳。因此為兩端口爭用同一地址單元時,其片內硬件電路可根據兩邊的地址、片選以及讀寫信號到達選后順序來裁決哪個端口有使用權。

          由此可知,BUSY信號可直接至支持插入等待時序的CPU如80C196的READY引腳,而無需軟件支持。在本卡中,由于89C52沒有READY信號,因而在89C52發(fā)出讀寫IDT7132命令時將鎖存BUSYR信號,而只需讀P1.6口的值就可判斷剛才對IDT7132讀寫時是否存在沖突。當P1.6的值為1時,剛才詢門不存在沖突;當1.6的值為0時,剛才詢問存在沖公安廳。此時要重發(fā)讀寫IDT7132的命令。由于ISA總線沒有READY信號,也沒有通用的I/O引腳,因而可將來自IDT7132的BUSYL信號接至數據線的最低位D0。但因為除了查詢BUSYL引腳電平時外,BUSYL不應接到D0,因而應采用三態(tài)門74L125。BUSYL接三態(tài)門的輸入端,三態(tài)門輸出端接ISA總線數據線D0位,其門控信號由A9~A5產生,故將占用ISA總線一個I/O端口。設計時應該選用一個空閑的端口號,這里選用330H(雙口RAM側,PC機則需換碼),即將A9~A5譯碼為11001.具體電路如圖3所示。

          4 的軟件設計

          主要用來承擔上位計算機和節(jié)點之間的數據轉發(fā)任務,其軟件設計也包括兩部分:第一部分是PC機端的應用程序接口(API)函數,負責完成PC機端與雙口RAM之間的通信,該部分可以采用可視化的編程工具如C++Builder編寫。PC機端軟件功能主要包括向上的雙口RAM發(fā)送控制命令、數據命令和請求數據命令,還將接收到的數據進行后處理(如,顯示、報表等);第二部分是卡上單片機端的程序設計,負責單片機與雙口RAM以主導控制器之間的通信,該部分可以采用匯編語言ASM51或Franklin C51編寫.軟件設計的主要任務是向控制器轉發(fā)來自PC機的命令,并由CAN控制器進一步轉發(fā)至CAN節(jié)點;同時,將CAN控制器接收的來自CAN節(jié)點的數據、狀態(tài)信息送到雙口RAM。

          5 需要說明的問題

          CAN的協議規(guī)范(CAN Specification 2.0A/B)只是一個低層的規(guī)范。因而還需要一個高層/應用層的協議,CAN的能力是由高層協議來選定和限制的。目前國際上CAN的應用層協議很多,如DeviceNet、CANopen、CANKingdom等,但用戶可以定制更簡單的應用層協議。應用層協議的任務一方面是對將要發(fā)送的數據進行分類、拆卸、合并,并確定發(fā)送對象,然后根據CAN的數據鏈路層協議規(guī)范填寫CAN的各個信息幀。另一方面是解釋接收到的數據的具體含義并對其進行相應的處理。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(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); })();