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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于USB總線的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          基于USB總線的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2013-02-05 來(lái)源:網(wǎng)絡(luò) 收藏

          2 系統(tǒng)軟件設(shè)計(jì)

          系統(tǒng)軟件包括USB設(shè)備驅(qū)動(dòng)程序、設(shè)備固件、應(yīng)用程序。

          2.1 USB設(shè)備驅(qū)動(dòng)程序開發(fā)

          即插即用管理模塊實(shí)現(xiàn)USB設(shè)備的熱插拔及動(dòng)態(tài)配置。當(dāng)硬件檢測(cè)到USB設(shè)備接入時(shí),Winodws98查找響應(yīng)的驅(qū)動(dòng)程序,并調(diào)用它的DriverEntry例程,PnP管理器調(diào)用驅(qū)動(dòng)程序的AddDevice例程,告訴它添加了一個(gè)設(shè)備;然后,驅(qū)動(dòng)程序?yàn)閁SB設(shè)備建立一個(gè)FDO(功能設(shè)備對(duì)象),在此處理過(guò)程中,驅(qū)動(dòng)程序收到一個(gè)IRP_MN_START_DEVICE的IRP,包括設(shè)備分配的資源信息。至此,設(shè)備被正確配置,驅(qū)動(dòng)程序開始與硬件進(jìn)行對(duì)話。當(dāng)然,在設(shè)備運(yùn)行過(guò)程中,如果設(shè)備的狀態(tài)發(fā)生變化(拔除、暫停等),PnP管理器也同樣發(fā)出相應(yīng)的IRP,由驅(qū)動(dòng)程序進(jìn)行相應(yīng)的處理。

          電源管理模塊負(fù)責(zé)設(shè)備的掛起與喚醒。

          I/O功能實(shí)現(xiàn)模塊完成I/O請(qǐng)求的大部工作。當(dāng)應(yīng)用程序提出I/O請(qǐng)求時(shí),它調(diào)用Win32 API函數(shù)DeviceIoControl來(lái)向設(shè)備發(fā)出命令。然后,由I/O管理器構(gòu)成一個(gè)IRP并設(shè)置其MajorFunction域?yàn)镮RP_MJ_DEVICE_CONTROL。USB設(shè)備驅(qū)動(dòng)程序收到該IRP后,取出其中的控制碼,并利用一個(gè)開關(guān)語(yǔ)句來(lái)找到對(duì)應(yīng)的例程入口。

          2.2 設(shè)備固件(firmware)設(shè)計(jì)

          設(shè)備固件是設(shè)備運(yùn)行的核心,采用匯編語(yǔ)言設(shè)計(jì)。其主要功能是控制芯片USB9602接受并處理USB驅(qū)動(dòng)程序的請(qǐng)求(如請(qǐng)求設(shè)備描述符、請(qǐng)求或設(shè)置設(shè)備狀態(tài)、請(qǐng)求設(shè)備設(shè)置、請(qǐng)求或設(shè)置設(shè)備接口等供10種USB1.1標(biāo)準(zhǔn)請(qǐng)求);控制芯片USB962接受應(yīng)用程序的控制指令;控制A/D模塊的數(shù)據(jù)采集;通過(guò)USB9602存儲(chǔ)數(shù)據(jù)并實(shí)時(shí)上傳PC。其程序主框圖如圖5所示。

          在圖5中,ALT事件表示硬件檢測(cè)到USBN96902處于下列狀態(tài):Reset、Resume、Suspend,由ALTEV寄存器匯報(bào)并產(chǎn)生中斷。



          評(píng)論


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