《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > USB協(xié)議淺析和USB設(shè)備設(shè)計(jì)簡(jiǎn)介
USB協(xié)議淺析和USB設(shè)備設(shè)計(jì)簡(jiǎn)介
姚成虎 王 磊
上海同濟(jì)大學(xué)電信學(xué)院(200092)
摘要: 從實(shí)用的角度出發(fā),對(duì)USB協(xié)議進(jìn)行了簡(jiǎn)單的解釋?zhuān)?duì)實(shí)際設(shè)計(jì)USB設(shè)備時(shí)必須考慮的一些關(guān)鍵問(wèn)題作了比較全面的討論。
關(guān)鍵詞: USB協(xié)議
Abstract:
Key words :
</a>

摘   要: 從實(shí)用的角度出發(fā),對(duì)USB協(xié)議" title="USB協(xié)議">USB協(xié)議" title="USB協(xié)議">USB協(xié)議進(jìn)行了簡(jiǎn)單的解釋?zhuān)?duì)實(shí)際設(shè)計(jì)USB設(shè)備時(shí)必須考慮的一些關(guān)鍵問(wèn)題作了比較全面的討論。
關(guān)鍵詞: USB  端點(diǎn)  描述符

   USB(Universal Serial Bus)是近年來(lái)應(yīng)用在PC領(lǐng)域的新型接口技術(shù),它是由一些PC大廠(chǎng)商如Microsoft、Intel等為了解決日益增加的PC外設(shè)與有限的主板插槽和端口之間的矛盾而制定的一種通用串行接口。USB接口具有許多優(yōu)點(diǎn),如接口簡(jiǎn)單、速度快、支持即插即用和熱插拔等。本文從實(shí)用的角度出發(fā),對(duì)USB協(xié)議和USB設(shè)備的設(shè)計(jì)(Windows環(huán)境下)進(jìn)行了通俗的說(shuō)明。由于USB協(xié)議的復(fù)雜性,許多具體問(wèn)題不可能在一篇文章中講清楚,所以本文只能起到拋磚引玉的作用。
1  USB協(xié)議的一些關(guān)鍵概念和問(wèn)題的說(shuō)明
1.1 USB主機(jī)和USB設(shè)備
  USB通信中居于核心地位的是主機(jī)(Host),常見(jiàn)的USB主機(jī)是PC機(jī)。任何一次USB的數(shù)據(jù)傳輸都必須由主機(jī)發(fā)起和控制;所有的USB外設(shè)都只能和主機(jī)建立連接;任何二個(gè)外設(shè)之間或是二個(gè)主機(jī)之間都無(wú)法直接通信。所以,USB主機(jī)和USB設(shè)備的功能是不同的。
  USB主機(jī)的功能有:(1)如果需要,通過(guò)USB接口給外設(shè)提供電源(因?yàn)橥庠O(shè)也可以自帶電源)。(2)檢測(cè)和配置設(shè)備(即設(shè)備的枚舉)。如:它必須檢測(cè)出設(shè)備的連接和拔除,了解設(shè)備的功能,給設(shè)備分配地址等。(3)錯(cuò)誤檢查和管理數(shù)據(jù)的傳輸。這些由USB接口硬件保證,不必編程處理。(4)根據(jù)設(shè)定的傳輸方式與外設(shè)交換數(shù)據(jù)。
  USB設(shè)備的功能有:(1)管理電源。設(shè)備可以由USB接口獲取電源,也可能有自己的電源。設(shè)備在USB接口無(wú)通信作用超過(guò)3ms后應(yīng)進(jìn)入低耗電的暫停狀態(tài)。(2)檢測(cè)通信。每一個(gè)設(shè)備都要檢測(cè)通信信息包中的地址是否和本設(shè)備的地址相符,如果不符,設(shè)備就會(huì)忽略本次通信,這由USB接口硬件自動(dòng)進(jìn)行處理。在設(shè)備一開(kāi)始連上USB接口時(shí),使用固定的默認(rèn)地址0,然后USB主機(jī)在檢測(cè)階段會(huì)給設(shè)備分配一個(gè)地址,以后的通信都按這個(gè)地址進(jìn)行。(3)通信數(shù)據(jù)的錯(cuò)誤檢查。由USB接口硬件保證,不必編程處理。(4)響應(yīng)請(qǐng)求。主機(jī)在檢測(cè)到有設(shè)備連接上以后,會(huì)按USB協(xié)議發(fā)送相應(yīng)的設(shè)備請(qǐng)求來(lái)了解設(shè)備的類(lèi)型和能力,并對(duì)設(shè)備進(jìn)行一些配置(如設(shè)定地址和配置描述符),設(shè)備應(yīng)能響應(yīng)這些請(qǐng)求,并返回相應(yīng)的應(yīng)答數(shù)據(jù)。(5)根據(jù)設(shè)定的傳輸方式與主機(jī)交換數(shù)據(jù)。
1.2 USB主機(jī)和USB設(shè)備之間數(shù)據(jù)的傳輸方式
  目前,USB協(xié)議規(guī)定了四種數(shù)據(jù)傳輸方式:(1)控制傳輸。主要用于主機(jī)對(duì)設(shè)備的檢測(cè)和配置。(2)中斷傳輸。用來(lái)支持那些偶然需要數(shù)據(jù)通信,但服務(wù)時(shí)間受限制的設(shè)備。中斷傳輸常常用在鍵盤(pán)、鼠標(biāo)和游戲桿等設(shè)備上。(3)批量傳輸。適合使用在時(shí)間不重要的場(chǎng)合。批量傳輸可以傳輸大量的數(shù)據(jù)而不會(huì)阻塞總線(xiàn),因?yàn)樗鼤?huì)讓其他類(lèi)型的傳輸先執(zhí)行,以等待可以傳輸?shù)臅r(shí)間,如用于磁盤(pán)操作。(4)同步傳輸。適合用于以固定速率進(jìn)行的傳輸,而且可以容忍偶爾的錯(cuò)誤,如實(shí)時(shí)語(yǔ)音傳輸。
1.3 設(shè)備的端點(diǎn)
  任何的數(shù)據(jù)傳輸都是傳遞到一個(gè)USB設(shè)備(確切地說(shuō)是USB接口器件)的端點(diǎn)(Endpoint),或是由一個(gè)USB設(shè)備的端點(diǎn)發(fā)出??梢园讯它c(diǎn)簡(jiǎn)單地理解成USB接口器件中的一個(gè)緩存器,用來(lái)作為數(shù)據(jù)的緩沖區(qū),它由相應(yīng)的控制寄存器和狀態(tài)寄存器來(lái)管理。儲(chǔ)存設(shè)備端點(diǎn)中儲(chǔ)存的可能是接收到的數(shù)據(jù),也可能是等待要送出的數(shù)據(jù)。主機(jī)也有接收與傳送數(shù)據(jù)的緩沖區(qū),不過(guò)主機(jī)并沒(méi)有把它定義成端點(diǎn),而是當(dāng)作與設(shè)備端點(diǎn)通信的出發(fā)點(diǎn)(Starting Point)。一個(gè)USB設(shè)備可能有好幾個(gè)端點(diǎn),每個(gè)端點(diǎn)可以設(shè)置成輸出或輸入方向以及控制、中斷、批量或同步傳輸方式中的一種。因?yàn)橹鳈C(jī)一開(kāi)始是通過(guò)端點(diǎn)0來(lái)檢測(cè)和配置設(shè)備的,所以每個(gè)設(shè)備都必須有一個(gè)端點(diǎn)0,而且其傳輸方式必須是控制傳輸(一般USB接口器件默認(rèn)支持)。除此之外,設(shè)備很少需要其他的控制端點(diǎn)。USB協(xié)議定義了11個(gè)標(biāo)準(zhǔn)請(qǐng)求命令,用于在端點(diǎn)0以控制傳輸方式來(lái)檢測(cè)和配置設(shè)備。
1.4 設(shè)備的描述符
  USB主機(jī)是通過(guò)請(qǐng)求USB設(shè)備的一系列描述符來(lái)獲取設(shè)備的信息的。描述符是一種定義好的數(shù)據(jù)結(jié)構(gòu),其中可能包含整個(gè)設(shè)備的信息,或是設(shè)備中的一個(gè)組件的信息。主機(jī)請(qǐng)求描述符,設(shè)備回復(fù)描述符。目前,USB協(xié)議定義了三種類(lèi)型的描述符:(1)標(biāo)準(zhǔn)類(lèi)型。用于提供設(shè)備的基本信息。標(biāo)準(zhǔn)類(lèi)型的描述符主要有:設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符以及字符串描述符等。(2)設(shè)備類(lèi)別特定描述符。用于提供設(shè)備更詳細(xì)的信息。如HID類(lèi)(人機(jī)接口類(lèi))設(shè)備的類(lèi)別特定描述符中的HID描述符和報(bào)表描述符,就可以用來(lái)描述設(shè)備究竟是一個(gè)鼠標(biāo)還是一個(gè)鍵盤(pán)。如果是鼠標(biāo),則報(bào)表描述符的數(shù)據(jù)就是鼠標(biāo)的按鍵和位移。(3)廠(chǎng)商特定描述符。也是用于提供設(shè)備的一些更詳細(xì)信息,不過(guò)它是由廠(chǎng)商自己定義的,不像設(shè)備類(lèi)別特定描述符那樣是USB規(guī)范定義的。標(biāo)準(zhǔn)類(lèi)型的描述符如圖1所示。下面介紹其中5種常用描述符,其他描述符請(qǐng)參考相關(guān)的資料。

  如圖1所示,每個(gè)設(shè)備只能有一個(gè)設(shè)備描述符,每個(gè)設(shè)備描述符可以有多個(gè)配置描述符,每個(gè)配置描述符可以有多個(gè)接口描述符,每個(gè)接口描述符可以有多個(gè)端點(diǎn)描述符。字符串描述符(可選)定義了可能用到的字符串,其他的描述符可以根據(jù)字符串描述符中相應(yīng)的索引值來(lái)引用相應(yīng)的字符串。USB主機(jī)在一個(gè)控制傳輸?shù)腢SB設(shè)置事務(wù)的數(shù)據(jù)信息包中,用GET_DESCRIPTOR標(biāo)準(zhǔn)請(qǐng)求(對(duì)應(yīng)的請(qǐng)求碼為0x06)來(lái)請(qǐng)求各種標(biāo)準(zhǔn)描述符;設(shè)備通過(guò)相應(yīng)的字段識(shí)別出主機(jī)請(qǐng)求的到底是哪一種描述符,并返回相應(yīng)的描述符和聯(lián)絡(luò)信號(hào)。這是USB設(shè)備的固件編程所要做的工作之一。
1.5 USB數(shù)據(jù)信息包的格式
  信息包(Packet)是USB傳輸數(shù)據(jù)組織的基本形式,其具體意義和實(shí)際內(nèi)容通過(guò)相應(yīng)的一系列字段來(lái)表示,有的字段在USB協(xié)議中有定義好的關(guān)鍵字。信息包的字段類(lèi)型有:
  ?。?)SYNC字段,用于信息包的開(kāi)始與同步,它由硬件自動(dòng)處理。
   (2)PID字段,信息包標(biāo)識(shí)符(Packet Identifier,PID),信息包共有四種類(lèi)型:令牌、數(shù)據(jù)、聯(lián)絡(luò)和特殊,四種類(lèi)型共對(duì)應(yīng)16個(gè)PID碼。
   (3)地址字段,用于指明USB主機(jī)究竟是要和哪個(gè)設(shè)備通信,設(shè)備的地址初始默認(rèn)為0,主機(jī)會(huì)在設(shè)備檢測(cè)階段給設(shè)備分配一個(gè)地址。
  ?。?)端點(diǎn)字段,用于指明USB主機(jī)究竟是要和設(shè)備的哪個(gè)端點(diǎn)進(jìn)行通信。如前所述,一個(gè)設(shè)備可以有多個(gè)端點(diǎn)。
   (5)幀號(hào)碼字段,USB主機(jī)把USB總線(xiàn)上的實(shí)際數(shù)據(jù)傳輸按時(shí)間分割成一塊塊的幀(Frame)或微幀(Micro Frame)。對(duì)于全速和低速的設(shè)備,主機(jī)將傳輸分成1毫秒的幀,對(duì)于高速設(shè)備主機(jī)將傳輸分成125微秒的微幀。幀號(hào)碼字段就是用于識(shí)別特定的幀或微幀,它由硬件自動(dòng)處理。
   (6)數(shù)據(jù)字段,為實(shí)際要傳輸?shù)臄?shù)據(jù)。
   (7)校驗(yàn)字段,用于信息包的數(shù)據(jù)校驗(yàn),它由硬件自動(dòng)處理。
  下面對(duì)PID字段作進(jìn)一步的說(shuō)明,因?yàn)檫@個(gè)字段對(duì)于理解信息包的概念至關(guān)重要。USB協(xié)議規(guī)定數(shù)據(jù)傳輸由事務(wù)(Transaction)(事務(wù)的概念見(jiàn)1.6的介紹)組成,而事務(wù)由信息包組成。一般來(lái)說(shuō),大多數(shù)事務(wù)包含三個(gè)信息包:令牌信息包、數(shù)據(jù)信息包和聯(lián)絡(luò)信息包。信息包根據(jù)PID字段(USB協(xié)議定義了16個(gè)PID碼)來(lái)區(qū)分不同的類(lèi)型。令牌信息包有四種類(lèi)型:
  ?。?)OUT,表示主機(jī)輸出數(shù)據(jù)到設(shè)備;
   (2)IN,表示主機(jī)從設(shè)備讀取數(shù)據(jù);
   (3)SOF,表示幀標(biāo)號(hào)開(kāi)始;
   (4)SETUP,專(zhuān)門(mén)用于控制傳輸?shù)脑O(shè)置事務(wù)。
   數(shù)據(jù)信息包和聯(lián)絡(luò)信息包也有各自的PID碼,這里不再細(xì)述。其中,只有OUT、IN和SETUP類(lèi)型的令牌信息包中需要指定地址字段和端點(diǎn)字段。這也容易理解,因?yàn)榧热环Q(chēng)為“令牌”,當(dāng)然首先要確定和哪個(gè)設(shè)備以及設(shè)備的哪個(gè)端點(diǎn)進(jìn)行通信。由此也可以看出,USB在數(shù)據(jù)傳輸中使用的是軟件聯(lián)絡(luò)方式,所以大大簡(jiǎn)化了接口形式。而常用的RS-232串行通信還有一些硬件的聯(lián)絡(luò)方式,如RTS和CTS信號(hào)線(xiàn)。雖然RS-232串行通信中也可以使用一些簡(jiǎn)單的軟件聯(lián)絡(luò)方式,如XON和XOFF碼,但與USB的軟件聯(lián)絡(luò)方式相比就顯得太簡(jiǎn)單了。
1.6  事  務(wù)
  USB協(xié)議規(guī)范將事務(wù)定義為“將一個(gè)服務(wù)傳送到一個(gè)端點(diǎn)”,這里的服務(wù)指的是主機(jī)傳送信息給設(shè)備,或是主機(jī)從設(shè)備接收信息。每一個(gè)傳輸可以包含一筆或多筆事務(wù),而每一筆事務(wù)可以包含一個(gè)、二個(gè)或三個(gè)信息包,可以把信息包理解為數(shù)據(jù)傳輸物理上的基本單位。大部分事務(wù)都包含三個(gè)信息包:令牌信息包、數(shù)據(jù)信息包和聯(lián)絡(luò)信息包。根據(jù)令牌信息包的PID標(biāo)識(shí),事務(wù)一般分為三種類(lèi)型:輸入(IN)事務(wù)、輸出(OUT)事務(wù)和設(shè)置(SETUP)事務(wù)。每一種傳輸類(lèi)型(控制、中斷、批量以及同步)包含一個(gè)或多個(gè)階段,而每一個(gè)階段包含一個(gè)或多個(gè)事務(wù)。具體說(shuō)來(lái),在控制傳輸中,一般包含設(shè)置事務(wù)階段(對(duì)應(yīng)于設(shè)置事務(wù)類(lèi)型)、數(shù)據(jù)階段(對(duì)應(yīng)于輸入或輸出事務(wù)類(lèi)型)以及狀態(tài)階段(對(duì)應(yīng)于輸入或輸出事務(wù)類(lèi)型),而中斷、批量以及同步傳輸中只包含數(shù)據(jù)階段。這其中,設(shè)置階段包含一個(gè)設(shè)置事務(wù)(由令牌信息包、數(shù)據(jù)信息包和聯(lián)絡(luò)信息包組成);數(shù)據(jù)階段可能由多個(gè)事務(wù)組成,一般每個(gè)事務(wù)也是由令牌信息包、數(shù)據(jù)信息包和聯(lián)絡(luò)信息包組成的(只有同步傳輸?shù)臄?shù)據(jù)階段的事務(wù)中不包含聯(lián)絡(luò)信息包);狀態(tài)階段包含一個(gè)事務(wù),該事務(wù)也是由令牌信息包、數(shù)據(jù)信息包和聯(lián)絡(luò)信息包組成,不過(guò)數(shù)據(jù)信息包的內(nèi)容為空,狀態(tài)階段只用于控制傳輸,以表明整個(gè)控制傳輸是否成功。
1.7 USB設(shè)備驅(qū)動(dòng)程序的加載
  在主機(jī)從設(shè)備描述符了解到設(shè)備的信息后,它會(huì)尋找一個(gè)最合適的驅(qū)動(dòng)程序來(lái)管理主機(jī)和設(shè)備的通信。在選擇驅(qū)動(dòng)程序時(shí),Windows會(huì)試圖將系統(tǒng)的.inf文件內(nèi)的信息與從設(shè)備內(nèi)讀出的廠(chǎng)商和產(chǎn)品ID以及版本號(hào)作比較,如果相符,就根據(jù)相應(yīng)的.inf文件加載驅(qū)動(dòng)程序。如果Windows找不到合適的.inf文件,它會(huì)顯示一個(gè)“添加新硬件向?qū)?rdquo;來(lái)讓用戶(hù)指定驅(qū)動(dòng)程序。
2  USB設(shè)備的設(shè)計(jì)
2.1 USB設(shè)備的設(shè)計(jì)概述
  USB規(guī)范定義了許多設(shè)備類(lèi)型,用不同的設(shè)備類(lèi)別碼和接口類(lèi)別碼來(lái)表示,如HID(Human Interface Device,人機(jī)接口類(lèi)設(shè)備)設(shè)備類(lèi)別碼是0x00,接口類(lèi)別碼是0x03,HID類(lèi)的設(shè)備有鍵盤(pán)、鼠標(biāo)以及游戲桿等;Mass Storage(大容量存儲(chǔ)設(shè)備)的設(shè)備類(lèi)別碼也是0x00,而接口類(lèi)別碼是0x09,Mass Storage類(lèi)的設(shè)備有軟盤(pán)、硬盤(pán)、光盤(pán)以及FLASH盤(pán)等;其他還有顯示器類(lèi)、通信設(shè)備類(lèi)、音頻設(shè)備類(lèi)等。USB規(guī)范中還有一個(gè)特別的Vendor Specific類(lèi)設(shè)備,用于廠(chǎng)商自定義設(shè)備類(lèi)型,其接口類(lèi)別碼為0xFF。所以,設(shè)計(jì)者總是可以找到一種適合自己要設(shè)計(jì)的設(shè)備類(lèi)型。
  設(shè)計(jì)USB設(shè)備時(shí),首先要確定好設(shè)備到底屬于哪個(gè)類(lèi)別,然后要實(shí)現(xiàn)基本USB通信協(xié)議以及設(shè)備的類(lèi)別通信協(xié)議。例如,U盤(pán)屬于Mass Storage設(shè)備,所以設(shè)計(jì)U盤(pán)時(shí),除了要實(shí)現(xiàn)基本的USB通信協(xié)議,還要實(shí)現(xiàn)大容量存儲(chǔ)設(shè)備類(lèi)規(guī)范中的UFI命令規(guī)范。由于Windows 提供了對(duì)Mass Storage 協(xié)議的支持,因此U盤(pán)只需要遵循Mass Storage 協(xié)議來(lái)組織數(shù)據(jù)和處理命令,即可實(shí)現(xiàn)與PC 機(jī)交換數(shù)據(jù)。一般來(lái)說(shuō),一個(gè)USB設(shè)備的完整設(shè)計(jì)過(guò)程主要包括四個(gè)部分:
   (1)USB硬件接口的設(shè)計(jì);
   (2)設(shè)備固件的編程;
   (3)PC端設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā);
   (4)PC端設(shè)備應(yīng)用程序的開(kāi)發(fā)。
2.2 USB硬件接口設(shè)計(jì)
  USB接口芯片一般有二種選擇方案:(1)USB芯片本身就是一個(gè)微控制器,如Cypress的EZ-USB系列芯片,與8051兼容,大部分EZ-USB芯片支持最大數(shù)目的端點(diǎn)(一個(gè)控制端點(diǎn)0以及30個(gè)額外的端點(diǎn))以及所有的4種傳輸方式;(2)USB芯片只處理USB通信,所以它必須由外部的微控制器來(lái)控制,如PLILIPS的PDIUSBD12,它符合USB1.1規(guī)范,包含默認(rèn)端點(diǎn)0在內(nèi)共有3個(gè)雙向端點(diǎn)。
2.3 控制器的固件編程
  USB接口芯片收到數(shù)據(jù)或發(fā)送出數(shù)據(jù)后都會(huì)產(chǎn)生中斷,所以固件編程的核心就是編寫(xiě)中斷服務(wù)程序。這項(xiàng)工作主要就是根據(jù)相關(guān)寄存器的標(biāo)志來(lái)對(duì)各個(gè)端點(diǎn)緩沖區(qū)的數(shù)據(jù)進(jìn)行處理??梢园阎袛喾?wù)程序分為一些功能模塊(函數(shù))來(lái)考慮:(1)端點(diǎn)0的響應(yīng)。當(dāng)設(shè)備插上USB接口后,主機(jī)會(huì)發(fā)出一系列的請(qǐng)求給設(shè)備的端點(diǎn)0,設(shè)備的固件程序應(yīng)該能在端點(diǎn)0對(duì)這些要求進(jìn)行正確響應(yīng)。(2)其他端點(diǎn)的數(shù)據(jù)通信過(guò)程。通過(guò)(1)主機(jī)就能知道設(shè)備端點(diǎn)的使用情況,以后就可以通過(guò)其他端點(diǎn)以設(shè)定的傳輸方式來(lái)交換數(shù)據(jù)。(3)實(shí)現(xiàn)設(shè)備類(lèi)別遵循的協(xié)議規(guī)范。例如,如果要設(shè)計(jì)U盤(pán),則U盤(pán)的固件程序就要實(shí)現(xiàn)對(duì)Mass Storage Class規(guī)范中的UFI命令規(guī)范的支持。
2.4 PC端驅(qū)動(dòng)程序的開(kāi)發(fā)
  在Windows內(nèi)執(zhí)行的USB設(shè)備驅(qū)動(dòng)程序,必須符合Microsoft定義的Win32驅(qū)動(dòng)程序模型(Win32 Driver Model,WDM)。它是一種分層的驅(qū)動(dòng)程序模型。Microsoft提供了Windows DDK(Windows Device Developer′s Kit)工具和VC編譯器來(lái)編寫(xiě)WDM驅(qū)動(dòng)程序,具體請(qǐng)參考相關(guān)的開(kāi)發(fā)指南。也有許多第三方的工具軟件可以用來(lái)編寫(xiě)USB的WDM驅(qū)動(dòng)程序,如Jungo 的WinDriver USB。使用這類(lèi)工具軟件不需要深入了解WDM的編程細(xì)節(jié)。
2.5 PC端應(yīng)用程序的設(shè)計(jì)
   在Win32系統(tǒng)中,操作系統(tǒng)把每一個(gè)設(shè)備都抽象為文件,應(yīng)用程序的設(shè)計(jì)只需要通過(guò)幾條簡(jiǎn)單的文件操作API函數(shù),就可以實(shí)現(xiàn)與設(shè)備的驅(qū)動(dòng)程序通信。這類(lèi)Win32函數(shù)有以下幾種:(1)CreatFile函數(shù),用于打開(kāi)一個(gè)設(shè)備,返回一個(gè)與設(shè)備相關(guān)的句柄;(2)ReadFile函數(shù),用于從設(shè)備中讀取數(shù)據(jù);(3)WriteFile函數(shù),用于向設(shè)備寫(xiě)數(shù)據(jù);(4)DeviceIoControl函數(shù),用于對(duì)設(shè)備進(jìn)行一些控制操作,如更改設(shè)置等;(5)CloseHandle函數(shù),關(guān)閉一個(gè)由CreatFile函數(shù)所打開(kāi)的設(shè)備,函數(shù)的參數(shù)為CreatFile函數(shù)返回的設(shè)備句柄。還有其他一些和USB設(shè)備類(lèi)別相關(guān)的API,可用于獲取設(shè)備的信息,如設(shè)備路徑和名稱(chēng)等,具體請(qǐng)參考相關(guān)的開(kāi)發(fā)指南。
3  結(jié)  論
   本文對(duì)設(shè)計(jì)USB設(shè)備所涉及到的一些關(guān)鍵問(wèn)題作了比較全面和通俗的解釋。鑒于USB接口具有的優(yōu)點(diǎn),可以想象USB設(shè)備必將獲得越來(lái)越廣泛的應(yīng)用。
參考文獻(xiàn)
1   蕭世文.USB2.0硬件設(shè)計(jì).北京:清華大學(xué)出版社,2003
2   周立功.PDIUSBD12 USB固件編程與驅(qū)動(dòng)開(kāi)發(fā).北京:北京航空航天大學(xué)出版社,2003
3   馬偉.嵌入式USB主機(jī)系統(tǒng)的研究與設(shè)計(jì).計(jì)算機(jī)測(cè)量與控制.2003;11(5):381
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。