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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于USB的數(shù)據(jù)采集系統(tǒng)的設(shè)計與研究

          基于USB的數(shù)據(jù)采集系統(tǒng)的設(shè)計與研究

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

          模/數(shù)轉(zhuǎn)換器需要外部提供基準電壓,ADC0804需要+2.5 V電壓,而且基準電壓是否穩(wěn)定、精確,直接影響數(shù)據(jù)轉(zhuǎn)換的精度。而NationalSemiconductor公司的LM336-2.5 V是一個能提供精確+2.5 V電壓的器件,他的集成電路是精確的2.5 V并聯(lián)推挽穩(wěn)壓二極管組成,還有一個用來調(diào)節(jié)溫度對電壓影響的引腳ADJ。芯片所產(chǎn)生的2.5 V的電壓可以很方便的從5 V電壓系統(tǒng)中獲得。

          4的軟件設(shè)計

          的軟件系統(tǒng)主要由3部分組成:固件程序(Firmware)、I_JSB設(shè)備驅(qū)動程序以及客戶應(yīng)用程序。3部分程序之間相互協(xié)作來完成整個采集卡的功能。

          4.1 固件程序設(shè)計

          固件程序是指運行在設(shè)備CPU中的程序。只有在該程序運行時,外設(shè)才能稱之為具有給定功能的外部設(shè)備。固件程序負責初始化各硬件單元,重新配置設(shè)備及A/D采樣控制。固件代碼的存儲位置有3種:第一種是存在主機中,設(shè)備加電后由驅(qū)動程序把固件下載到片內(nèi)RAM后執(zhí)行,即重新枚舉;第二種方法是把固件代碼固化到一片E2PRAM中,外設(shè)加電后由FX2通過I21C總線下載到片內(nèi)RAM后自動執(zhí)行;最后一種方法是把程序固化到一片R()M中,使之充當外部程序存儲器,連在FX2三總線上。本文選用第一種方式,這種方式便于系統(tǒng)的調(diào)試和升級。

          Cypress公司為CY7C68013提供了一個開發(fā)框架,可以在KEILC51環(huán)境下開發(fā)。由于開發(fā)框架的引入,大大縮短了用戶的研發(fā)周期。該框架由以下幾部分組成:

          (1)Fw.C中包含了程序框架的MAIN函數(shù),管理整個51內(nèi)核的運行,因為CypreSS對這個部分的功能進行了精心劃分,一般是不用改動的。

          (2)用戶必須將PERIP H.C實例化,他負責系統(tǒng)周邊器件的互聯(lián)。固件的設(shè)計主要針對這個文件,用戶必須根據(jù)自己系統(tǒng)的需要,實例化這個文件,以實現(xiàn)自己的功能。在這個文件中有幾個函數(shù)是比較關(guān)鍵的,在這里做特別說明:

          TD Init函數(shù),負責對端點進行初始化設(shè)置。本設(shè)計中將端點6設(shè)置為1 024個字節(jié),緩存深度為4級,模式設(shè)為自動輸入方式。

          TD Poll函數(shù),負責系統(tǒng)中循環(huán)任務(wù)的處理。他主要是對各個端點的狀態(tài)進行查詢,處理各種OUT或IN端點的交互。值得說明的一點是,這種處理只是輔助性質(zhì)的,大部分工作由硬件自動完成。



          評論


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