版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于lm3sxxx的usb開發(fā)筆記- triton. zhang2011-08-30【摘要】ti收購lm后繼承了 lm 系列的cortex-m3的產(chǎn)品,從而彌補(bǔ)了了 tt在mcu市場一個空白。 從產(chǎn)品規(guī)劃來講,的產(chǎn)品還是不錯的,特別是帶can、usb、和集成mac+pi1y的etii接口,這些 外設(shè)為開發(fā)者提供了一個更方便的連接器解決方案。木文就通過lm3sxxx的usb應(yīng)用筆記給大家介 紹一個完整的usb系統(tǒng)是如何開發(fā)出來的。lm3sxxx的兒大系列中,其中f3xxx, f5xxx和最新的f9xxx系列都帶有usb接口,有的是只支持 device,有的支持host + device,部分芯片
2、支持0tg功能,具體要看數(shù)據(jù)手冊,本文的所有試驗(yàn)都 基于t1最新的功能最全的lm3s9b96的評估板。如果想更詳細(xì)了解usb應(yīng)用的朋友可以參看t1的 相關(guān)文檔和usb的協(xié)議。本文中的所有程序都是本人編寫,請配合該程序進(jìn)行學(xué)習(xí)。本文提及到的參考資料,請參見后 而的參考資料列表,如果是剛剛接觸usb,或者lm3sxxx的同學(xué)可以先下載這些資料。本開發(fā)筆記分為三大章節(jié),第一章介紹usb的基礎(chǔ)知識,如果對usb協(xié)議已經(jīng)熟悉的同學(xué),可 以跳過本章。第二章介紹如何在lm3sxxx芯片上開發(fā)usb程序,第三章介紹如何在pc上開發(fā)usb 的驅(qū)動程序。希望通過木筆記的學(xué)習(xí),能夠幫助人家盡快的學(xué)會如何進(jìn)行isb的
3、設(shè)計(jì)開發(fā)?;趌m3sxxx的usb開發(fā)筆記1目 錄2第一章usb開發(fā)的必備知識3usb系統(tǒng)介紹3usb的連接模型3usb的拓?fù)浣Y(jié)構(gòu)4usb的電氣特性6usb總線協(xié)議6usb數(shù)據(jù)流分類7usb的帶寬7usb設(shè)備的插入檢測機(jī)制7usb的識別過程8usb的請求命令8usb的描述符10usb設(shè)備的枚舉過程18第一章usb開發(fā)的必備知識usb系統(tǒng)介紹usb是通用串行總線(universal serial bus)的簡寫。usb協(xié)議先后經(jīng)歷過usb1. 0, usb1. 1, usb2. 0和usb3. 0o由于目前市面上的mcu大多只支持usb2. 0,所以本文主要介紹usb2. 0的特性。usb是主
4、從模式的總線結(jié)構(gòu),設(shè)備與設(shè)備z間,主機(jī)與主機(jī)z間是不能互連的,為了解決這個 問題,擴(kuò)大usb的使用范圍,在usb2. 0之后,出現(xiàn)了 usb otg(o n the go)。usb otg的做法是同 一個設(shè)備,在不同的應(yīng)用場合下可以在主機(jī)和從機(jī)之間自由切換。在usb1. 0和usb1. 1版本中,只支持1. 5mbps的低速模式(low speed)和12mbps的全速模式(full speed) 在 usb2. 0 中,又加入了 480m 的高速模式(high speed) ousb的連接模型usb是一種主從結(jié)構(gòu)的總線,主機(jī)叫做host,從機(jī)叫做device(也就是我們平時講的設(shè)備)。一個
5、完整的usb系統(tǒng)主要由三個部分組成: usb的連接器usb的連接是指usb設(shè)備與主機(jī)之間進(jìn)行連接和通信的操作,主要包括以下幾個方面:-總線的拓?fù)浣Y(jié)構(gòu):usb設(shè)備與主機(jī)之間的各種連接方式-內(nèi)部層次關(guān)系:根據(jù)性能疊置,usb的任務(wù)被分配到系統(tǒng)的每一個層次-數(shù)據(jù)流模式:描述了數(shù)據(jù)在提供中通過usb從發(fā)起端到接收端的流動方式-usb的調(diào)度:usb提供了一個共享的連接,對可疑使用的連接進(jìn)行調(diào)度以支持同步數(shù)據(jù) 傳輸 usb的主機(jī)在任何usb系統(tǒng)中,只有一個usb的主機(jī),usb和主機(jī)系統(tǒng)的接口叫做主機(jī)控制器。主機(jī) 控制器由硬件,固件和軟件綜合實(shí)現(xiàn)。 usb的設(shè)備usb的設(shè)備包含兩大類:-網(wǎng)絡(luò)集線設(shè)備:為us
6、b系統(tǒng)提供更多的連接點(diǎn)-功能設(shè)備:為usb系統(tǒng)提供具體功能usb的數(shù)據(jù)交換只能發(fā)生在主機(jī)和從機(jī)z間,主機(jī)和主機(jī),從機(jī)和從機(jī)之間是不能進(jìn)行數(shù)據(jù)交 換的。為了再物理上區(qū)分主機(jī)和從機(jī),使用不同的插頭和插座,這樣我們就能輕松的通過連接線來 判斷出usb系統(tǒng)屮,誰處于主機(jī)模式,誰處于從機(jī)模式。最早的usb標(biāo)準(zhǔn)中,usb接頭只有4根線,usb2. 0之后,定義了 miniusb接口,增加了一個id 線,主要用在otg的設(shè)備上用來標(biāo)識本設(shè)備1d。標(biāo)準(zhǔn)的usb接口有a型和b型,每一個類型又分為 插頭和插座。如下圖所示:series mah connectorsseries hbn connectors ser
7、ies hah plugs are always oriented upstream towards the host svstemnah plugs(from the usb device) a型插頭nah receptacles (downst) earn output fi om the usb host or "hub)a型播金 series nbm plugs are always oriented downstream towards theusb deviceb型插頭hb° plugs from thehost system)nbn receptacles (
8、upsti'emn input to theusb de'ice or hub) b型插座usb系統(tǒng)中,所有的數(shù)據(jù)傳輸都是由主機(jī)主動發(fā)起的,從機(jī)值是被動地負(fù)責(zé)應(yīng)答。在usb otg 應(yīng)用中,一個設(shè)備可以在從機(jī)和主機(jī)之間切換,從而實(shí)現(xiàn)了設(shè)備間的連接,大大地增加了 usb的使 用范圉。但即使otg的應(yīng)用也還是屈于主從模式,兩個設(shè)備之間一個作為主機(jī),一個作為從機(jī)。usb的拓?fù)浣Y(jié)構(gòu)usb的拓?fù)浣Y(jié)構(gòu)為金字塔型。usb系統(tǒng)由一個usb主控制器出發(fā),下面接usb的集線器,usb集 線器將一個usb接口擴(kuò)展為多個usb接口,多個usb接口又可通過集線器擴(kuò)展更多的接口。usb協(xié) 議中對集線器的層
9、數(shù)有限制,usb1. 1規(guī)定usb的集線器層數(shù)最多是4層,usb2. 0規(guī)定最多為6層。usb主控制器通過7位地址對掛接在總線上的設(shè)備進(jìn)行尋址,理論上一個主控制器上最多可以 接128個設(shè)備,但實(shí)際應(yīng)用中接不了這么多。在pc機(jī)上,一般有一個(或多個)usb集線器,它叫根集線器,直接連接在usb的主控制器上。 打開電腦的設(shè)備管理器,我們可以看到usb的主控制器和根集線器。如下圖所示:-3b34-3b3ca主控制器sound丿 video and game controllersstorage volumessystem devicesuniversal serial bus controllers
10、generic usb hub _ _generic usb hub二p 集線器generic usb hubgeneric usb hubhuawei mobile connect - bus enumerate deviceintel(r) 5 series/3400 series chipset family usb enhanced host controller intel(r) 5 series/3400 series chipset family usb enhanced host controller stellaris evaluation board astellaris
11、evaluation board busb composite deviceusb composite deviceusb composite deviceusb composite deviceusb mass storage deviceusb mass storage deviceusb root hub根集線器usb root hub圖2. pc機(jī)上的usb控制器和集線器usb的電氣特性vblfsd+d-gnd標(biāo)進(jìn)的usb使用4根線:5v電源線(vbus),差分?jǐn)?shù)據(jù)線負(fù)(d-),差分?jǐn)?shù)據(jù)線正(d+),地(gnd)o 在usb otg中,又增加了一種mini接口,使用的是5根線,比標(biāo)準(zhǔn)的
12、usb多了一根身份識別(id) 線。如下圖所示:vbdsd-gndusb使用的是差分傳輸模式,有兩根數(shù)據(jù)先,分別是d-和d+。在usb低速和全速模式中,釆用 的是電壓傳輸模式,在高速模式下,則是電流傳輸模式。為了避免氏時間出現(xiàn)全0或全1的信號,在發(fā)送數(shù)據(jù)前,要經(jīng)過位填充處理。然后將數(shù)據(jù)串行 化,發(fā)送到數(shù)據(jù)總線上,由兩根數(shù)據(jù)線的差分值來表示0和1。在接收端恰恰相反,接收端采樣數(shù) 據(jù)總線,將數(shù)據(jù)并行話,然后去白化處理(即去掉填充位),在解析數(shù)據(jù)。在usb協(xié)議屮規(guī)定,設(shè)備可以通過usb總線供電,在未配置z前,設(shè)備可以從vbls上獲取loonia 的電流,配置之后,最多可以從vbus ±獲取
13、500ma的電流。關(guān)于usb的的電氣特性有如下幾點(diǎn)需要注意:-電纜中包括vbus、gnd二條線,向設(shè)備提供電源;-vbus使用+5v電源。usb對電纜長度要求很寬,最長可為兒米;-為了保證足夠的輸入電壓和終端阻抗,重要的終端設(shè)備應(yīng)位于電纜的尾部;-低速模式需要更少的emi保護(hù);-兩種模式可在用同一 usb總線傳輸?shù)那闆r下自動地動態(tài)切換。-過多的低速模式的使用將降低總線的利用率;usb總線協(xié)議usb總線屬于輪詢方式的總線,始終由主機(jī)控制端口初始化所有的數(shù)據(jù)傳輸。每一個usb總線執(zhí)行動作最多傳送三個數(shù)據(jù)包。按照傳輸前制定好的原則,在每次傳送開始時, 主機(jī)控制器發(fā)送一個描述傳輸操作的種類、方向,us
14、b設(shè)備地址和終端號的usb數(shù)據(jù)包,這個數(shù)據(jù) 包通常稱為標(biāo)志包(token packet) ousb設(shè)備從數(shù)據(jù)包中収出屬于自己的數(shù)據(jù)。數(shù)據(jù)傳輸方向不是從主機(jī)到設(shè)備就是從設(shè)備到主 機(jī)。在傳輸開始時,由標(biāo)志包來標(biāo)識數(shù)據(jù)的傳輸方向,然后發(fā)送端開始發(fā)送包含信息的數(shù)據(jù)包或表 明沒有數(shù)據(jù)傳送。接收端也要相應(yīng)發(fā)送一個握手的數(shù)據(jù)包表明是否傳送成功。發(fā)送端和接收端z間 的usb數(shù)據(jù)傳輸,在主機(jī)和設(shè)備的端口之間可視為一個管道(pipe)ousb存在兩種類型的管道:-數(shù)據(jù)流管道數(shù)據(jù)流管道的數(shù)據(jù)沒有usb協(xié)議規(guī)定的結(jié)構(gòu)。管道與數(shù)據(jù)寬、傳輸服務(wù)類型、端口特性 (如緩沖區(qū)大?。┯嘘P(guān)。數(shù)據(jù)流管道在usb設(shè)備初始化設(shè)置完成就存
15、在了。-消息管道:消息通道是usb協(xié)議屮特殊的一個管道,也成為控制管道。設(shè)備上電啟動后,該管道 就存在,為設(shè)備的設(shè)置、查詢狀態(tài)和輸入控制信息提供了一個入口。usb數(shù)據(jù)流分類在usb主機(jī)和設(shè)備通道之間的數(shù)據(jù)傳輸,我們叫做數(shù)據(jù)流,i'sb的結(jié)構(gòu)包含四個基本的數(shù)據(jù)流 傳輸類型:-控制數(shù)據(jù)傳送在設(shè)備連接時用來對設(shè)備進(jìn)行設(shè)置,還可對指定設(shè)備進(jìn)行控制,如通道控制;-批量數(shù)據(jù)傳送大批量產(chǎn)生并使用的數(shù)據(jù),在傳輸約束下,具有很廣的動態(tài)范圉:通常用在打卬機(jī)和掃描儀 等有大量數(shù)據(jù)需求的傳輸。-中斷數(shù)據(jù)的傳送用來描述或兀配人的感覺或?qū)μ卣鞣磻?yīng)的回饋;中斷數(shù)據(jù)傳輸是針対少量數(shù)據(jù)的傳輸筒求, 數(shù)據(jù)延遲時間也是有限
16、范圍內(nèi)的。-同步數(shù)據(jù)的傳送由預(yù)先確定的傳送延遲來填滿預(yù)定的usb帶寬;同步數(shù)據(jù)的建立、傳輸和使用時時連續(xù)且實(shí) 時的,同步數(shù)據(jù)時以穩(wěn)泄的速率發(fā)送和接收實(shí)時信息,同步數(shù)據(jù)要使接受者與發(fā)送者保持相同的時 間安排,出了傳輸速率,同步數(shù)據(jù)對延遲非常敏感。對于任何指定的usb設(shè)備而言,一個通道只能支持上述一種方式的數(shù)據(jù)流傳輸。usb的帶寬usb的帶寬分配給各個通道,當(dāng)一個通道建立后,lsb主機(jī)就分毗給它一定的帶寬,usb設(shè)備需要 提供一些數(shù)據(jù)緩沖區(qū),若usb提供了更多的帶寬,貝懦要更多的緩沖區(qū)。usb的體系要保證緩沖引 導(dǎo)的硬件的延遲限定在兒亳秒內(nèi)。usb設(shè)備的插入檢測機(jī)制當(dāng)usb設(shè)備插上主機(jī)時,主機(jī)是如
17、何檢測到設(shè)備插入的呢?首先,在每個usb的集線器下游端hd十和d-上,分別接了一個15k歐姆的下拉電阻到地。當(dāng) 集線器的端口懸空時,d+和d-被這兩個下拉電阻拉到地,同為低電平。在低速usb的設(shè)備上,dd-被接上1.5k歐姆的上拉電阻,在全速和高速usb設(shè)備上,d+被接上 一個1.5k歐姆的上拉電阻。當(dāng)設(shè)備插入集線器是,由于1.5k歐姆的上拉和下拉電阻分壓,就將d+ 或d-其中的一條線拉高了。集線器檢測到這個狀態(tài)后,就上報(bào)usb主控制器,檢測到設(shè)備的插入。 通過對d+, d-電平的識別可以判斷出是低速設(shè)備還是高速或全速的設(shè)備。高速和全速的設(shè)備需要主機(jī)和從機(jī)進(jìn)一步數(shù)據(jù)交換后才能確定。usb的識別
18、過程當(dāng)usb主機(jī)檢測到usb設(shè)備插入后,主機(jī)就通過一系列的動作來對設(shè)備進(jìn)行枚舉配置(配置是 屬于枚舉的一個態(tài),態(tài)表示暫時的狀態(tài)),這些態(tài)如下:-接入態(tài)(attached)設(shè)備接入主機(jī)后,主機(jī)通過檢測信號線上的電平變化來發(fā)現(xiàn)設(shè)備的接入;-供電態(tài)(powered)就是給設(shè)備供電,分為設(shè)備接入時的默認(rèn)供電值,配置階段后的供電值(按數(shù)據(jù)屮要求的最 大值,可通過編程設(shè)置)-缺省態(tài)(default)usb在被配置之前,通過缺省地址0與主機(jī)進(jìn)行通信-地址態(tài)(address)經(jīng)過了配置,usb設(shè)備被復(fù)位后,就可以按主機(jī)分配給它的唯一地址來與主機(jī)通信,這種狀 態(tài)就是地址態(tài);-配置態(tài)(configured)通過各
19、種標(biāo)準(zhǔn)的usb請求命令來獲取設(shè)備的各種信息,并對設(shè)備的某此信息進(jìn)行改變或設(shè)置。 -掛起態(tài)(suspended)總線供電設(shè)備在3ms內(nèi)沒有總線操作,即usb總線處于空閑狀態(tài)的話,該設(shè)備就要自動進(jìn)入 掛起狀態(tài),在進(jìn)入掛起狀態(tài)后,總的電流功耗不超過280ua。usb的請求命令控制傳輸過程中,初始化設(shè)置usb的設(shè)備吋會涉及到usb的請求命令。標(biāo)準(zhǔn)的usb設(shè)備請求 命令總共有11個,每個命令由8個字節(jié)(5個字段)組成,具有相同的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)如下圖 所示:表1、usb命令的結(jié)構(gòu)偏移量域長度(半字)值描述0bmrequesttype1位圖請求特征:d7 :傳輸方向0=主機(jī)至設(shè)備1 =設(shè)備至主機(jī)d6.5
20、:種類0 =標(biāo)準(zhǔn)1 =類2 =廠商3=保留d4.0:接收者0 =設(shè)備1 =接口2 =端點(diǎn)3=其他4.31保留1brequest1值命令類型編碼值(見表3)2wvalue2值根據(jù)不同的命令,含義也不同4win dex2索引或偏移根據(jù)不同的命令,含義也不同,主 要用于傳送索引或偏移6wlength2如冇數(shù)據(jù)傳送階段,此為數(shù)據(jù)字節(jié) 數(shù)下表列出了 usb的ii種標(biāo)準(zhǔn)命令表2、usb的門種標(biāo)準(zhǔn)命令命令bmrequesttypebrequestwvaulewlndexwlengthdataclear_feature0000 0000b0000 0001b0000 001 obclear_feature特性
21、選 擇符零接口號端點(diǎn)號零無get configuratio n1000 0000bget 一 configuration零零配置值get_descriptor1000 0000bget_descriptor描述表 種類(高 字節(jié),見 表5)和索 引(低字 節(jié))零或語言 標(biāo)志描述表長描述農(nóng)get_ln terface1000 0001bgetjnterface零接口號-可選設(shè)置get_status1000 0000b1000 0001b1000 0010bget_status零零(返回 設(shè)備狀 態(tài)) 接口號 (對像是 接口時) 端點(diǎn)號 (對象是 端點(diǎn)時)設(shè)備, 接口, 或端點(diǎn) 狀態(tài)set_add
22、ress0000 0000bset_address設(shè)備地址零零無set_configuratio n0000 0000bset_configuration配置值 (高字節(jié) 為0,低 字節(jié)表 示要設(shè) 置的配 置值)零零無set descriptor0000 0000bset descriptor描述表零或語言描述表長描述表種類(高 字節(jié),見 表5)和索 引(低字 節(jié))標(biāo)志set_feature0000 0000b0000 0001b0000 001 obset_feature特性選 擇符(1表 示設(shè)備, 0表示端 點(diǎn))零, 接口號, 端點(diǎn)號零無set_ln terface0000 0001bse
23、tjnterface可選設(shè)置接口號零無synch frame1000 0010 bsynch fram零端點(diǎn)號二幀號其中brequest為命令編碼值,含義見表3:表3、usb標(biāo)準(zhǔn)命令的編碼值brequestvalueget.status0clear feature1reserved2set feature3reserved4set address5get descriptor6set descriptor7get configuration8set configuration9getjnterface10setjnterface11synch frame12這里就不詳細(xì)介紹這11個命令了,如果
24、有感興趣的同學(xué)請自己去看usb2.0的協(xié)議。控制傳輸 是usb的重點(diǎn),而控制傳輸就是依靠這ii個命令來完成的,所以這11個命令搞明白了,usb就算 是入門了。usb的描述符usb協(xié)議為usb設(shè)備定義了一套描述設(shè)備功能和屬性的有固定結(jié)構(gòu)的描述符,包扌舌標(biāo)準(zhǔn)的描述 符即設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符和字符串描述符,還有百標(biāo)準(zhǔn)描述符,如 類描述符。usb設(shè)備通過這些描述符向usb主機(jī)匯報(bào)設(shè)備的各種各樣屬性,主機(jī)通過對這些描述符 的訪問對設(shè)備進(jìn)行類型識別、配置并為其提供相應(yīng)的客戶端驅(qū)動程序。usb設(shè)備通過描述符反映自己的設(shè)備特性。usb描述符是由特定格式排列的一組數(shù)據(jù)結(jié)構(gòu)組成。在usb
25、設(shè)備枚舉過程中,主機(jī)端的協(xié)義軟件需要解析從usb設(shè)備讀取的所有描述符信息。在usb 主向設(shè)備發(fā)送讀取描述符的請求后,usb設(shè)備將所有的描述符以連續(xù)的數(shù)據(jù)流方式傳輸給usb主機(jī)。 主機(jī)從第一個讀到的字符開始,根據(jù)雙方規(guī)定好的數(shù)據(jù)格式,順序地解析讀到的數(shù)據(jù)流。usb描述符包含標(biāo)準(zhǔn)描述符、類描述符和廠商特定描述3種形式。任何一種設(shè)備必須usb標(biāo)準(zhǔn) 描述符(隊(duì)字符串描述符可選外)。在usb1. x中,規(guī)定了 5種標(biāo)準(zhǔn)描述符:設(shè)備描述符(device descriptor) >配置描述符 (configuration descriptor)、接口描述符(interface descriptor)&
26、gt; 端點(diǎn)描述符(endpoint descriptor)和字符串描述符(string descriptor)0每個usb設(shè)備只有一個設(shè)備描述符,而一個設(shè)備屮可包含一個或多個配置描述符,即usb設(shè)備 可以有多種配置。設(shè)備的每一個配置中又可以包含一個或多個接口描述符,即usb設(shè)備可以支持多 種功能(接口),接口的特性通過描述符提供。在usb主機(jī)訪問usb設(shè)備的描述符時,usb設(shè)備依照設(shè)備描述符、配置描述符、接口描述符、 端點(diǎn)描述符、字符串描述符順序?qū)⑺忻枋龇麄鹘o主機(jī)。一設(shè)備至少要包含設(shè)備描述符、配置描述 符和接口描述符,如果usb設(shè)備沒有端點(diǎn)描述符,則它僅僅用默認(rèn)管道與主機(jī)進(jìn)行數(shù)據(jù)傳輸。設(shè)備
27、描述符設(shè)備描述符給出了 usb設(shè)備的一般信息,包括對設(shè)備及在設(shè)備配置屮起全程作用的信息,包括 制造商標(biāo)識號id、產(chǎn)品序列號、所屬設(shè)備類號、默認(rèn)端點(diǎn)的最大包長度和配置描述符的個數(shù)等。一 個usb設(shè)備必須有且僅有一個設(shè)備描述符。設(shè)備描述符是設(shè)備連接到總線上吋usb主機(jī)所讀取的第 一個描述符,它包含了 14個字段,結(jié)構(gòu)如下:表4、usb設(shè)備描述符的結(jié)構(gòu)偏移量域大小值描述0blength1數(shù)字此描述表的字節(jié)數(shù)1bdescriptortype1常量描述符的類型(此處應(yīng)為0x01,即設(shè)備描述符)2bcdusb2bcd碼此設(shè)備與描述表兼容的usb設(shè)備說明版木號(bcd碼)4bdeviceclass1類設(shè)備類
28、碼:如果此域的值為0則一個設(shè)置下每個接口指出它自己的類, 各個接口各口獨(dú)立工作。如果此域的值出于feh之間,則設(shè)備在不同的接口上支持 不同的類。并這些接口可能不能獨(dú)立工作。此值指出了這些 接口集體的類定義。如果此域設(shè)置ffii,貝川匕設(shè)備的類由廠商定義。5bdevicesubclass1子類子類挖碼這些碼值的具體含義根據(jù)bdeviceclass域來看。 如bdeviceclass域?yàn)榱?此域也須為零 如bdeviceclass域?yàn)閒fh,此域的所有值保留6bdevicelortocol1協(xié)議協(xié)議碼這些碼得值是 bdcviddddddddddddddddddddddccclass 和bdevic
29、esubclass 的值而定。如果設(shè)備支持設(shè)備類相關(guān)的協(xié)議,此碼標(biāo)志了設(shè)備類的值。如果此域的值為零,則此設(shè)備不支持設(shè)備類相關(guān)的協(xié)議,然 而,肯它的接口支持設(shè)備類柑關(guān)的協(xié)議。如果此域的值為 ffh,此設(shè)備使用廠商定義的協(xié)議。7bmaxpacketsizeo1數(shù)字端點(diǎn)0的最大包大?。▋H& 16, 32, 64為合法值)8idvendor2id廠商標(biāo)志(由usb-1f組織賦值)10idproduct2id產(chǎn)品標(biāo)志(由廠商賦值)12bcddevice2bcd碼設(shè)備發(fā)行碼(bcd碼)14imanufacture1索引描述廠商信息的字符申描述的索引值15iproduct1索引描述產(chǎn)品信息的字符串描
30、述符的索引值16iserialnumber1索引描述設(shè)備序列號信息的字符串描述符的索引值17bnumconfigurations1數(shù)字可能的配置描述符數(shù)目其中bdescriptortype為描述符的類型,其含義可查下表(此表也適用于標(biāo)準(zhǔn)命令 get descriptor中wvalue域高字節(jié)的取值含義):表5、usb描述符的類型值類型描述符描述符值標(biāo)志描述符設(shè)備描述符(device descriptor)0x01配置描述符(configuration descriptor)0x02字符串描述符(string descriptor)0x03接口描述符(interface descriptor)0
31、x04端點(diǎn)描述符(endport descriptor)0x05類描述符集線器類描述符(hub descriptor)0x29人機(jī)接口類描述符(1i1d)0x21廠商定義的描述符oxff設(shè)備類代碼bdeviccclass可查下表:表 5、usb 設(shè)備的類別(bdeviccclass)值(十進(jìn)制)值(十六進(jìn)制)說明00x00接口描述符中提供類的值20x02通信類90x09集線器類220oxdc用于診斷用途的設(shè)備類2240xe0無線通信設(shè)備類255oxff廠商定義的設(shè)備類設(shè)備描述符在程序中的結(jié)構(gòu)體表示如下:1.2.3.struct _device_des criptor_structbyte bl
32、ength;/設(shè)備描述符的字節(jié)數(shù)人小,為0x124.byte bdes criptortype;/描述符類型編號,為0x015.word bcdusb;/usb版本號6.byte bdeviceclass;/ usb分配的設(shè)備類代碼,0x01 0xfe為標(biāo)準(zhǔn)設(shè)備類,7./oxff為廠商口定義類8./0x00不是在設(shè)備描述符中定義的,如hid9.byte bdevicesubclass;/usb分配的子類代碼,同上,值由usb規(guī)定和分配的10.byte bdeviceprotoci;/usb分配的設(shè)備協(xié)議代碼,同上11.12.13.14.15.16.17.18.19./端點(diǎn)0的最大包的大小/廠商
33、編號/產(chǎn)品編號/設(shè)備出廠編號/描述廠商字符串的索引/描述產(chǎn)品字符串的索引/描述設(shè)備序列號字符串的索引byte bmaxpacketsizeo;word idvendor;word idproduct;word bcddevice;byte imanufacturer;byte iproduct;byte iserialnumber;byte bnumconfiguration; / 口j能的配置數(shù)量以下是一種鼠標(biāo)的設(shè)備描述符示例,以供大家分析:表7、一種鼠標(biāo)的設(shè)備描述符示例字段描述符值(十六進(jìn)制)blength0x12bdecriptortype0x01bcdusb0x0110bdevicec
34、lciss0x00bdevicesubclciss0x00bdevicelortocol0x00bmcixpcicketsizeo0x08idvendor0x045e(microsoft corporation)idproduct0x0047bcddevice0x300imcinufacture0x01iproduct0x03iserialnumber0x00bnumconfigurtitio n0x01配置描述符配置描述符中包括了描述符的長度(屬于此描述符的所有接口描述符和端點(diǎn)描述符的長度的 和)、供電方式(自供電/總線供電)、最大耗電量等。主果主機(jī)發(fā)出usb標(biāo)準(zhǔn)命令get_descript
35、or 要求得到設(shè)備的某個配置描述符,那么除了此配置描述符以外,此配置包含的所有接口描述符與端 點(diǎn)描述符都將提供給usb主機(jī)。表8、usb配置描述符的結(jié)構(gòu)偏移量域大小值描述0blength1數(shù)字此描述表的字節(jié)數(shù)長度1bdescriptortype1常量配置描述表類型(此處為0x02)2wtotallength2數(shù)字此配置信總的總長(包括配置,接口,端點(diǎn)和設(shè)備類及廠 商定義的描述符)4bnumlntcrfacc1數(shù)字此配置所支持的接口個數(shù)5i con figuration5 luc1數(shù)字在setconfiguration ()請求屮用作參數(shù)來選定此配置6iconfiguration1索引描述此配置
36、的字符串描述表索引7bmattributcs1位圖配置特性:d7:保留(設(shè)為1)d6:自給電源d5:遠(yuǎn)程喚醒04. 0:保留(設(shè)為1)一個既用總線電源又有自給電源的設(shè)備會在maxpower域 指出需要從總線取電疑。并設(shè)置d6為1。運(yùn)行使共的實(shí) 際電源可由getstatus (device)請求得到。8maxpower1ma在此配置下的總線電源耗費(fèi)量,以2ma為一個單位配置描述符在程序中的結(jié)構(gòu)體表示如下:01. struct _configuration_des criptor_struct02. 03.byteblength;/設(shè)備描述符的字節(jié)數(shù)大小,為0x1204.bytebdes crip
37、tortype;/ 描述符類型編號,為 0x0105.word wtotallength;/配置所返回的所有數(shù)量的人小06.bytebnumlnterface;/此配置所支持的接口數(shù)量07.bytebconfigurationvale;/ set_configuration 命令需要的參數(shù)值08.byteiconfiguration;/描述該配置的字符串的索引值09.bytebmattribute;供電模式的選擇10.bytemaxpower;設(shè)備從總線提取的最人電流11- 下而是一種硬盤的配置描述符實(shí)例,以供分析:表9、一種硬盤的配置描述符示例字段描述符值(十六進(jìn)制)blength0x09b
38、descriptortype0x02wtotallengthoxolfbnumtnterface0x01bconfigurationvaiue0x01iconfiguration0x00bmattributes0x0cmaxpower0x32接口描述符配置描述符中包含了一個或多個接口描述符,這里的“接口”并不是指物理存在的接口,在這 里把它稱之為“功能”更易理解些,例如一個設(shè)備既有錄音的功能又有揚(yáng)聲器的功能,則這個設(shè)備 至少就有兩個“接口”。如果一個配置描述符不止支持一個接口描述符,并且每個接口描述符都有一個或多個端點(diǎn)描述 符,那么在響應(yīng)usb主機(jī)的配置描述符命令時,usb設(shè)備的端點(diǎn)描述符總是
39、緊跟著相關(guān)的接口描述 符后面,作為配置描述符的一部分被返回。接口描述符不可直接用set_descriptor和 get descriptor 來存取。如果一個接口僅使用端點(diǎn)0,則接口描述符以后就不再返回端點(diǎn)描述符,并且此接口表現(xiàn)的是 一個控制接口的特性,它使用與端點(diǎn)0相關(guān)聯(lián)的默認(rèn)管道進(jìn)行數(shù)據(jù)傳輸。在這種情況下 bnumberendpoints域應(yīng)被設(shè)置成0。接口描述符在說明端點(diǎn)個數(shù)并不把端點(diǎn)0計(jì)算在內(nèi)。表10、usb接口描述符的結(jié)構(gòu)偏移量域大小值描述0blcngth1數(shù)字此表的字節(jié)數(shù)1bdcscriptortypc1常量接口描述表類(此處應(yīng)為0x04)2btnterfacenumber1數(shù)字接
40、口號,當(dāng)前配置支持的接口數(shù)組索引(從零開始)3baltcrnatoselling1數(shù)字可選設(shè)置的索引值4bnumendpoints1數(shù)字此接口用的端點(diǎn)數(shù)量,如果是零則說明此接口只用缺省控制管道5btnterfaceclass1類接口所屬的類值:零值為將來的標(biāo)準(zhǔn)保留如果此域的值設(shè)為ffh,則此接口類由廠商說明。所冇英他的值由usb說明保留6btnterfacesubclass1子類子類碼:這些值的定義視blnterfaceclass域而定。如果blnterfaceclass 域的值為零則詞語的值必須為零。blnterfaceclass域不為ffh則所冇值由usb所保留7btnterfaccpro
41、tocol1協(xié)議協(xié)議碼:blnterfaceclass 和 b 1 nterfacesubclass 域的值而定, 如果一個接口支持設(shè)備類和關(guān)的請求此域的值指出了設(shè)備類說明 所定義的協(xié)議。8iinterface1索引描述此接口的字符串描述表的索引值對于blnterfaceclass字段,表示接口所屬的類別,usb協(xié)議根據(jù)功能將不同的接口劃分成不 的類,其具體含義如下表所示:表11、usb協(xié)議定義的接口類別(blnterfaceclass)值(十六進(jìn)制)類別0x01音頻類0x02cdc控制類0x03人機(jī)接口類(hid)0x05物理類0x06圖像類0x07打印機(jī)類0x08大數(shù)據(jù)存儲類0x09集線器
42、類0x0acdc數(shù)據(jù)類0x0b智能卡類0x0d安全類oxdc診斷設(shè)備類oxeo無線控制類oxfe特定應(yīng)用類(包括紅外的橋接器等)oxff廠商定義的設(shè)備接口描述符在程序屮的結(jié)構(gòu)體表示如下:01 struct _interface_des criptor_struct02.03.byte blength;/設(shè)備描述符的字節(jié)數(shù)大小,為0x1204.byte bdes criptortype;/描述符類型編號,為0x0105.byte blnterfacenunber;/接口的編號06.byte balternatesetting;/備用的接口描述符編號07.byte bnumendpoints;/該
43、接口使用端點(diǎn)數(shù),不包括端點(diǎn)008.byte blnterfaceclass;/接口類型09.byte blnterfacesubclass; /接口了類型10.byte blnterfaceprotocol;/接口所逍循的協(xié)議11.byte ilnterface;/描述該接口的字符串索引值12.端點(diǎn)描述符端點(diǎn)是設(shè)備與主機(jī)之間進(jìn)行數(shù)據(jù)傳輸?shù)倪壿嫿涌?,除配置使用的端點(diǎn)0 (控制端點(diǎn),一般一個 設(shè)備只有一個控制端點(diǎn))為雙向端口外,其它均為單向。端點(diǎn)描述符描述了數(shù)據(jù)的傳輸類型、傳輸 方向、數(shù)據(jù)包大小和端點(diǎn)號(也可稱為端點(diǎn)地址)等。除了描述符中描述的端點(diǎn)外,每個設(shè)備必須耍有一個默認(rèn)的控制型端點(diǎn),地址為0
44、,它的數(shù)據(jù) 傳輸為雙向,而且沒有專門的描述符,只是在設(shè)備描述符屮定義了它的最大包長度。主機(jī)通過此端 點(diǎn)向設(shè)備發(fā)送命令,獲得設(shè)備的各種描述符的信息,并通過它來配置設(shè)備。表12、usb端點(diǎn)描述符的結(jié)構(gòu)偏移量域大小值描述0blenglh1數(shù)字此描述表的字節(jié)數(shù)長度1bdescriptortype1常量端點(diǎn)描述表類(此處應(yīng)為0x05)2bendpointaddress1端點(diǎn)此描述表所描述的端點(diǎn)的地址,方向: bit3. 0 :端點(diǎn)號b116.4 :保留位零bit7 :方向,如果控制端點(diǎn)則略0 :輸出端點(diǎn)(主機(jī)到設(shè)備)1 :輸入端點(diǎn)(設(shè)備到主機(jī))3binattributes1位圖此域的值描述的是在bcon
45、figurationvalue域所指的配 置下端點(diǎn)的特性:bit 1.0 :傳送類型00 =控制傳送01 =同步傳送10 =批傳送11 =中斷傳送其他所冇位都保留4wmacpacketsize2數(shù)字當(dāng)前配置下此端點(diǎn)能夠接收或發(fā)送的最人數(shù)據(jù)包的人小. 對于實(shí)際傳輸,此值用于為每幀的數(shù)據(jù)凈荷預(yù)留時間。在實(shí)際運(yùn)行時,筲道可能不完全需耍預(yù)留的帶寬,實(shí)際帶寬 可由設(shè)備通過一種非usb定義的機(jī)制匯報(bào)給主機(jī)。對于中 斷傳輸,批量傳輸和控制傳輸,端點(diǎn)可能發(fā)送比之短的數(shù) 據(jù)包。6blnterval1數(shù)字周期數(shù)據(jù)傳輸端點(diǎn)的時間間隙。此域的值對于批傳送的端點(diǎn)及控制傳送的端點(diǎn)無意義。對 于同步傳送的端點(diǎn)此域必需為1,
46、表示周期為1ms。對于 中斷傳送的端點(diǎn)此域值的范圍為1ms到255mso端點(diǎn)描述符在程序中的結(jié)構(gòu)體表示如下:01. struct _endpoin_des criptor_struct02. 03.04.05.06.07.08.byte blength;/設(shè)備描述符的字節(jié)數(shù)大小,為0x12byte bdes criptortype;/描述符類型編號,為 0x01byte bendpointaddress;/端點(diǎn)地址及輸入輸出屬性byte bmattribute;/端點(diǎn)的傳輸類型屬性word wmaxpacketsize;/端點(diǎn)收、發(fā)的最大包的大小byte blnterval;/主機(jī)查詢端點(diǎn)的時
47、間間隔09. 下表是一種鼠標(biāo)的端點(diǎn)描述符的示例,該端點(diǎn)是一個屮斷端點(diǎn):表13、一種鼠標(biāo)的端點(diǎn)描述符示例域值(十六進(jìn)制)blength0x07bdescriptortype0x05bendpointaddress0x81bmattributes0x03wmaxpacketsize0x04blntervaloxoa字符串描述符字符串描述符是一種可選的usb標(biāo)準(zhǔn)描述符,描述了如制商、設(shè)備名稱或序列號等信息。如果 一個設(shè)備無字符串描述符,則其它描述符屮與字符串有關(guān)的索引值都必須為0。字符串使用的是 unicode 編碼。主機(jī)請示得到某個字符串描述符時一般分成兩步:首先主機(jī)向設(shè)備發(fā)出usb標(biāo)準(zhǔn)命令 ge
48、t_descriptor,其中所使用的字符串的索引值為0,設(shè)備返冋一個字符串描述符,此描述符的結(jié) 構(gòu)如下:表14、usb字符串描述符(響應(yīng)主機(jī)請求時返回的表示語言id的字符串描述符)偏移量域大小值描述0blength1n+2此描述表的字節(jié)數(shù)1bdescriptortype1常量字符串描述農(nóng)類型(此處應(yīng)為0x03)2wlangid02數(shù)字語言標(biāo)識(lang 1d)碼0 nwlangidx2數(shù)字語言標(biāo)識(lang 1d)碼x該字符串描述符雙字節(jié)的語言id的數(shù)組,wlangidovlangidx指明了設(shè)備支持的語言,具 體含義可查看usb langids. pdf。主機(jī)根據(jù)自己需要的語言,再次向設(shè)備發(fā)出usb標(biāo)準(zhǔn)命令get_descriptor,指明所要求得到的 字符串的索引值和語言。這次設(shè)備所返回的是unicode編號的字符串描述符,其結(jié)構(gòu)如下:表15、unicode字符串描述符(響應(yīng)主機(jī)請求時真正表示字符串編碼的字符串描述符)偏移量域大小值描述0bl.e ng th1數(shù)字此描述表的字節(jié)數(shù)(bstring域的數(shù)值n+2)1bdescriptortype1常量字串描述表類型(此處應(yīng)為0x03)2bstringn數(shù)字unicode編碼的字串bstring域?yàn)樵O(shè)備實(shí)際返回的以unicode編碼的字符串流,我們在編寫設(shè)備端硬件驅(qū)動的吋候蠱要將
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美容日常知識培訓(xùn)課件
- 2024年適用:服務(wù)行業(yè)勞動合同
- 《MPS程式制作》課件
- 質(zhì)檢統(tǒng)計(jì)知識培訓(xùn)課件
- 母嬰護(hù)理知識培訓(xùn)課件
- 2024年遺產(chǎn)預(yù)分割協(xié)議:兄妹間財(cái)產(chǎn)分配3篇
- 《安全檔案講課完全》課件
- 肇慶醫(yī)學(xué)高等??茖W(xué)?!妒覂?nèi)空間設(shè)計(jì)II》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年魔術(shù)演出專用合同格式3篇
- 《公司的解散和清算》課件
- 實(shí)際控制人與法人協(xié)議模板
- 期末核心素養(yǎng)測評卷2023-2024學(xué)年語文五年級上冊+統(tǒng)編版
- 上海八年級數(shù)學(xué)上期末幾何提優(yōu)題目集錦
- DB32T3494-2019灌漿復(fù)合瀝青路面施工技術(shù)規(guī)范
- 2024年石油石化技能考試-石油鉆井工筆試參考題庫含答案
- 監(jiān)控工程驗(yàn)收單-范本模板
- DLT 5175-2021 火力發(fā)電廠熱工開關(guān)量和模擬量控制系統(tǒng)設(shè)計(jì)規(guī)程-PDF解密
- 110kV變電站及110kV輸電線路運(yùn)維投標(biāo)技術(shù)方案(第一部分)
- 福建省泉州市晉江市2023屆九年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 東北扭秧歌活動方案
- 車身穩(wěn)定系統(tǒng)課件
評論
0/150
提交評論