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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于VC的USB2.0數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          基于VC的USB2.0數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2011-11-18 來(lái)源:網(wǎng)絡(luò) 收藏
          2.2 USB設(shè)備驅(qū)動(dòng)程序

          本文引用地址:http://www.ex-cimer.com/article/150051.htm

            USB設(shè)備驅(qū)動(dòng)程序主要是使操作能夠識(shí)別USB設(shè)備,建立起主機(jī)端與設(shè)備端之間的通信,它們之間的通信是通過(guò)Windows提供的API函數(shù)實(shí)現(xiàn)的,這些函數(shù)可以控制顯示器、處理信息、訪問(wèn)存儲(chǔ)器、讀寫磁盤和其他設(shè)備。

            

          CY7C68013-128AC內(nèi)部結(jié)構(gòu)

            圖2是USB設(shè)備驅(qū)動(dòng)程序的整體結(jié)構(gòu)圖。

            

          USB設(shè)備驅(qū)動(dòng)程序的整體結(jié)構(gòu)圖

            USB設(shè)備驅(qū)動(dòng)的整體結(jié)構(gòu)包括如下5個(gè)主要部分:USB應(yīng)用程序接口、USB設(shè)備驅(qū)動(dòng)函數(shù)、USB中斷服務(wù)程序、USB回調(diào)接口程序、USB標(biāo)準(zhǔn)事件處理程序。

            2.2.1 USB應(yīng)用程序接口

            USB應(yīng)用程序接口主要功能是對(duì)USB驅(qū)動(dòng)器進(jìn)行軟硬件初始化、打開(kāi)端口、關(guān)閉端口、讀端口、寫端口和端口控制操作。當(dāng)設(shè)備驅(qū)動(dòng)器裝入設(shè)備表時(shí),I/O就調(diào)用該應(yīng)用程序接口。

            USB應(yīng)用程序接口的一個(gè)例程主要包含:

            a)對(duì)USB端口安裝、初始化和硬件配置(USB_init())。初始化步驟為:將USB設(shè)備驅(qū)動(dòng)器安裝到I/O系統(tǒng)設(shè)備表中,獲取USB控制器使用的中斷號(hào),初始化USB驅(qū)動(dòng)器數(shù)據(jù)結(jié)構(gòu)與USB端口狀態(tài)寄存器,啟動(dòng)USB標(biāo)準(zhǔn)事件處理程序。

            b)打開(kāi)USB端口(USB_open())。USB_open函數(shù)允許應(yīng)用程序打開(kāi)一個(gè)USB端口和選擇DMA數(shù)據(jù)傳輸方式。

            c)關(guān)閉USB端口(USB_close())。USB_close函數(shù)允許應(yīng)用程序關(guān)閉一個(gè)端口,并關(guān)閉DMA通道。

            d)對(duì)USB端口進(jìn)行讀操作(USB_read())。USB_read函數(shù)允許應(yīng)用程序從輸出端口或控制端口讀取一定量的數(shù)據(jù)。

            e)對(duì)USB端口進(jìn)行寫操作(USB_write())。USB_write函數(shù)與USB_read函數(shù)功能類似,允許應(yīng)用程序?qū)憯?shù)據(jù)到輸入端口或控制端口。

            f)對(duì)USB設(shè)備進(jìn)行I/O控制操作(USB_ioctl())。

            2.2.2 USB中斷服務(wù)程序

            USB控制器產(chǎn)生單一中斷,多個(gè)端口共享。每個(gè)端口產(chǎn)生ACK、NACK/ERROR中斷;輸出端口產(chǎn)生接收零字節(jié)包或短包中斷;控制端口0接收設(shè)置包時(shí)產(chǎn)生中斷;USB控制器產(chǎn)生USB事件中斷,如幀起始(SOF)、掛起、恢復(fù)和復(fù)位。先識(shí)別發(fā)生USB中斷的類型以清除中斷產(chǎn)生的條件,再讀USB狀態(tài)寄存器,獲取當(dāng)前配置、接口或幀起始時(shí)間戳狀態(tài)信息,最后向USB控制器消息隊(duì)列或回調(diào)函數(shù)的接收消息隊(duì)列發(fā)送中斷消息。

            2.2.3 USB標(biāo)準(zhǔn)事件處理程序

            USB驅(qū)動(dòng)器初始化后,啟動(dòng)USB標(biāo)準(zhǔn)事件處理程序負(fù)責(zé)處理枚舉過(guò)程和異步USB事件。事件處理程序使用控制端口0,直到完成枚舉過(guò)程。當(dāng)USB應(yīng)用程序處于非活動(dòng)狀態(tài)時(shí),除控制端口0以外端口均不可訪問(wèn)。事件處理程序在端口0上執(zhí)行控制操作,響應(yīng)USB標(biāo)準(zhǔn)請(qǐng)求,并負(fù)責(zé)通知USB應(yīng)用程序枚舉完成和接口活動(dòng)狀態(tài),USB事件通過(guò)回調(diào)接口傳遞到USB外設(shè)應(yīng)用程序。當(dāng)對(duì)USB端口枚舉操作完成,USB應(yīng)用程序就可打開(kāi)并使用USB端口。



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