USB的HID通信協(xié)議模版_第1頁(yè)
USB的HID通信協(xié)議模版_第2頁(yè)
USB的HID通信協(xié)議模版_第3頁(yè)
USB的HID通信協(xié)議模版_第4頁(yè)
USB的HID通信協(xié)議模版_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

USB事務(wù)處理是主機(jī)和設(shè)備之間數(shù)據(jù)傳輸?shù)母締挝?,由一系列具有特定格式的信息包組USBUSB的信息傳輸單元包及其數(shù)據(jù)域談起。通過(guò)由下而上,從簡(jiǎn)潔至簡(jiǎn)潔的通信協(xié)議單位組成各種簡(jiǎn)潔的通信協(xié)議,進(jìn)而構(gòu)建出完整的通信協(xié)議。包包〔Packet〕是USB系統(tǒng)中信息傳輸?shù)母締卧繑?shù)據(jù)都是經(jīng)過(guò)打包后在總線上傳輸?shù)?。首先了解一下包的組成。USB包由五局部組成,即同步〔SYNC〕字段、包標(biāo)識(shí)符〔PID〕字段、數(shù)據(jù)字段、循環(huán)冗余校驗(yàn)〔CRC〕字段和包結(jié)尾〔EOP〕字段,包的根本格式如下:同步字段〔SYNC〕PIDCRC〔EOP〕USB的數(shù)據(jù)傳輸中,全部的傳輸包都起始于SYNCPID,后面是包中所包含的數(shù)據(jù)信息,接下來(lái)是用來(lái)檢測(cè)包中數(shù)據(jù)錯(cuò)誤的循環(huán)冗余校驗(yàn)信息,最終以包結(jié)尾作為完畢標(biāo)志。下面我們將一一介紹每個(gè)字段。同步〔SYNC〕字段SYNC8位組成,作為每個(gè)數(shù)據(jù)信息包的前導(dǎo)。顧名思義,它是用來(lái)產(chǎn)生同步作用的,目的是使USB設(shè)備與總線的包傳輸率同步,它的數(shù)值固定為00000001。包標(biāo)識(shí)符〔PID〕字段PIDSYNC字段后面,用來(lái)表示數(shù)據(jù)信息包的類(lèi)型。在USB協(xié)議中,依據(jù)PID的不同,USB包有著不同的類(lèi)型,分別表示具有特定的意義。如下所示:PID0PID1PID2PID3包標(biāo)識(shí)符長(zhǎng)度為一個(gè)字節(jié)〔8個(gè)數(shù)據(jù)位〕,44個(gè)位的校驗(yàn)字段構(gòu)成。PIDUSB包類(lèi)型的唯一標(biāo)志,USBUSB設(shè)備在接收到包后,必需首先對(duì)包標(biāo)識(shí)符解碼得到包的類(lèi)型,并推斷其意義從而做出下一個(gè)反響。包標(biāo)識(shí)符中的校驗(yàn)字段是通過(guò)對(duì)類(lèi)型字段的每個(gè)位求反碼產(chǎn)生的,它是用來(lái)對(duì)包類(lèi)型字段進(jìn)展錯(cuò)誤檢測(cè)用的,旨在保證對(duì)包的標(biāo)識(shí)符譯碼的牢靠性,假設(shè)4個(gè)檢驗(yàn)位不是它們各自的類(lèi)型位的反碼,則說(shuō)明標(biāo)識(shí)符中的信息有錯(cuò)誤。表16-2中列出了信息包的類(lèi)型,包括令牌、數(shù)據(jù)、握手或特別四種信息包類(lèi)型。為簡(jiǎn)化對(duì)USB的生疏,有關(guān)高速傳輸?shù)木植繘](méi)有在表中列出。數(shù)據(jù)字段在USB包中,數(shù)據(jù)字段是用來(lái)攜帶主機(jī)與設(shè)備之間要傳遞的信息,其內(nèi)容和長(zhǎng)度依據(jù)包標(biāo)識(shí)符、傳輸類(lèi)型的不同而各不一樣。并非全部的USB包都必需有數(shù)據(jù)字段,例如握手包、SOFUSB包中,數(shù)據(jù)字段可以包含設(shè)備地址、端點(diǎn)號(hào)、幀序列號(hào)以及數(shù)據(jù)等內(nèi)容。在總線傳輸中,總是首先傳輸字節(jié)的最低位,最終傳輸字節(jié)的最高位。設(shè)備地址〔ADDR〕數(shù)據(jù)域ADDR7127個(gè)外圍設(shè)備。端點(diǎn)〔ENDP〕數(shù)據(jù)域ENDP4432ENDP數(shù)據(jù)域僅用IN、OUTSETUP令牌信息包中。對(duì)于慢速設(shè)備可支持端點(diǎn)01作為中斷傳16個(gè)輸入端點(diǎn)〔IN〕16個(gè)輸出端點(diǎn)〔OUT〕32個(gè)端點(diǎn)。幀序列號(hào)USBPIDSOF11位的幀序列號(hào)。幀序列號(hào)由主機(jī)產(chǎn)生,且每個(gè)數(shù)據(jù)幀自動(dòng)加一,最大數(shù)值為0x7FF。當(dāng)幀序列號(hào)到達(dá)最大數(shù)時(shí)將自動(dòng)從0開(kāi)頭循環(huán)。數(shù)據(jù)DATA信息包內(nèi),依據(jù)不同的傳輸類(lèi)型,擁有不同的字節(jié)大小,從01023字節(jié)〔實(shí)時(shí)傳輸〕。循環(huán)冗余校驗(yàn)〔CRC〕字段依據(jù)不同的信息包類(lèi)型,CRC數(shù)據(jù)域由不同數(shù)目的位所組成。其中重要的數(shù)據(jù)信息包承受CRC16的數(shù)據(jù)域〔16個(gè)位〕,而其余的信息包類(lèi)型則承受CRC5的數(shù)據(jù)域〔5個(gè)位〕。其中的循環(huán)冗余碼校驗(yàn)CRC,是一種錯(cuò)誤檢測(cè)技術(shù)。由于數(shù)據(jù)在傳輸時(shí),有時(shí)候會(huì)發(fā)生錯(cuò)誤CRC可依據(jù)數(shù)據(jù)算出一個(gè)校驗(yàn)值,然后依此推斷數(shù)據(jù)的正確性。包結(jié)尾〔EOP〕字段包的發(fā)送方在包的結(jié)尾發(fā)出包結(jié)尾信號(hào)。它表現(xiàn)為差分線路的兩根數(shù)據(jù)線保持2比特低位1比特空閑位時(shí)間。USBEOP推斷數(shù)據(jù)包的完畢。信息包格式依據(jù)信息包所實(shí)現(xiàn)的功能,其可以分為3種類(lèi)型:令牌包、數(shù)據(jù)包和握手包。其中,令牌包定義了數(shù)據(jù)傳輸?shù)念?lèi)型,數(shù)據(jù)包中含有需要傳輸?shù)臄?shù)據(jù),握手包指明白數(shù)據(jù)接收是否成功。令牌〔token〕包在USB系統(tǒng)中,只有主機(jī)才能發(fā)出令牌包。令牌包定義了數(shù)據(jù)傳輸?shù)念?lèi)型,它是事務(wù)處理的第一階段。令牌包格式如下:88745位SYNCPIDADDRENDPCRC5SETUP、INOUT這三個(gè)令牌包。它們用來(lái)在根集線器和設(shè)備端IN包用來(lái)建立一個(gè)從設(shè)備到根集線器的數(shù)據(jù)傳送,一個(gè)OUT包用來(lái)建立從根集線器到設(shè)備的數(shù)據(jù)傳輸。INOUT包可以對(duì)任何設(shè)備上的任何端點(diǎn)SETUPOUT包的特別情形,它是“高優(yōu)先級(jí)的”,也就是說(shuō)設(shè)備必需承受它,即使設(shè)備正在進(jìn)展數(shù)據(jù)傳輸操作的過(guò)程中也要對(duì)其進(jìn)展響應(yīng)。SETUP包總是指向0的。數(shù)據(jù)〔data〕包4個(gè)數(shù)據(jù)域:SYNC、PID、DATACRC16。在這里要留意的是DATA數(shù)據(jù)域內(nèi)所放置的位值,需依據(jù)USB設(shè)備的傳輸速度〔慢速、高速與全速〕以及傳輸類(lèi)型〔中斷傳輸、批量傳輸、等時(shí)傳輸〕而定,且須以8字節(jié)為根本單位。也就是,假設(shè)8字節(jié),或傳輸?shù)阶罱K所剩余的也缺乏88字節(jié)的數(shù)據(jù)域。格式如下:880~102316位SYNCPIDDATACRC16握手〔Handshake〕包握手信息包是最簡(jiǎn)潔的信息包類(lèi)型。在這個(gè)握手信息包中僅包含一個(gè)PID數(shù)據(jù)域而已,它的格式如下所列:88位SYNCPIDSYNCPID兩個(gè)數(shù)據(jù)域。事務(wù)在USB上數(shù)據(jù)信息的一次接收或發(fā)送的處理過(guò)程稱為事務(wù)處理〔Transaction〕。事務(wù)處理的類(lèi)型包括輸入(IN)事務(wù)處理、輸出(OUT)事務(wù)處理、設(shè)置(SETUP)事務(wù)處理和幀開(kāi)頭、幀結(jié)尾等類(lèi)型。在輸出(OUT)事務(wù)處理和設(shè)置(SETUP)SETUPOUT包DATA包,DATA0DATA1DATA包后面,設(shè)備將回應(yīng)一個(gè)握手信號(hào),假設(shè)設(shè)備可以接收數(shù)據(jù),就回應(yīng)ACKNAK包,假設(shè)設(shè)STALLIN事務(wù)中,INDATANAK包或STALLNAKSTALL包給主機(jī),假設(shè)設(shè)備數(shù)據(jù)預(yù)備好發(fā)DATA包,DATA0DATA1包也是交替地發(fā)送的,緊接著DATA包后面是主機(jī)發(fā)給設(shè)備的握手包,ACK表示主機(jī)可以接收數(shù)據(jù),NAK包代表主機(jī)忙,STALL包代表主機(jī)出錯(cuò)。下面我們?cè)俜謩e介紹這些事務(wù)。1.輸入〔IN〕事務(wù)處理USBUSB設(shè)備接收一個(gè)數(shù)據(jù)包的過(guò)程,接下來(lái)分析輸入事務(wù)處理的各種典型狀況:正常的輸入事務(wù)處理主機(jī)->設(shè)備(令牌信息包)SYNCINADDRENDPCRC5設(shè)備->主機(jī)(數(shù)據(jù)信息包)SYNCDATA0DATACRC16主機(jī)->設(shè)備(握手信息包)SYNCACK設(shè)備忙時(shí)的輸入事務(wù)處理主機(jī)->設(shè)備(令牌信息包)SYNCINADDRENDPCRC5設(shè)備->主機(jī)(握手信息包)SYNCNAK設(shè)備出錯(cuò)時(shí)的輸入事務(wù)處理主機(jī)->設(shè)備(令牌信息包)SYNCINADDRENDPCRC5設(shè)備->主機(jī)(握手信息包)SYNCSTALL2.輸出〔OUT〕事務(wù)處理正常的輸出事務(wù)處理主機(jī)->設(shè)備(令牌信息包)SYNCOUTADDRENDPCRC5主機(jī)->設(shè)備(數(shù)據(jù)信息包)SYNCDATA0DATACRC16設(shè)備->主機(jī)(握手信息包)SYNCACK設(shè)備忙時(shí)的輸出事務(wù)處理主機(jī)->設(shè)備(令牌信息包)SYNCOUTADDRENDPCRC5主機(jī)->設(shè)備(數(shù)據(jù)信息包)SYNCDATA0DATACRC16設(shè)備->主機(jī)(握手信息包)SYNCNAK設(shè)備出錯(cuò)時(shí)的輸出事務(wù)處理主機(jī)->設(shè)備(令牌信息包)SYNCOUTADDRENDPCRC5主機(jī)->設(shè)備(數(shù)據(jù)信息包)SYNCDATA0DATACRC16設(shè)備->主機(jī)(握手信息包)SYNCSTALL3.設(shè)置〔SETUP〕事務(wù)處理正常的設(shè)置事務(wù)處理主機(jī)->設(shè)備(令牌信息包)SYNCSETUPADDRENDPCRC5主機(jī)->設(shè)備(數(shù)據(jù)信息包)SYNCDATA0DATACRC16設(shè)備->主機(jī)(握手信息包)SYNCACK設(shè)備忙時(shí)的設(shè)置事務(wù)處理主機(jī)->設(shè)備(令牌信息包)SYNCSETUPADDRENDPCRC5主機(jī)->設(shè)備(數(shù)據(jù)信息包)SYNCDATA0DATACRC16設(shè)備->主機(jī)(握手信息包)SYNCNAK設(shè)備出錯(cuò)時(shí)的設(shè)置事務(wù)處理主機(jī)->設(shè)備(令牌信息包)SYNCSETUPADDRENDPCRC5主機(jī)->設(shè)備(數(shù)據(jù)信息包)SYNCDATA0DATACRC16設(shè)備->主機(jī)(握手信息包)SYNCSTALLUSB傳輸類(lèi)型USB4種傳輸類(lèi)型:把握傳輸、中斷傳輸、批量傳輸以及實(shí)時(shí)傳輸。這里只具體介紹把握傳輸,其他傳輸類(lèi)型只作簡(jiǎn)要說(shuō)明。把握傳輸把握傳輸是USB傳輸中最重要的傳輸,唯有正確地執(zhí)行完把握傳輸,才能進(jìn)一步正確地執(zhí)行其他傳輸模式。USB設(shè)備可能速度、傳輸?shù)陌拇笮〉刃畔⒂锌赡懿煌?,因此每個(gè)USB設(shè)備內(nèi)部都記錄著該設(shè)備的一些信息〔也就是接下來(lái)將要介紹的設(shè)備描述符〕,當(dāng)在主機(jī)上檢測(cè)到USB設(shè)備時(shí),系統(tǒng)軟件必需讀取設(shè)備描述符,以確定該設(shè)備的類(lèi)型和操作特性,以及對(duì)該設(shè)備進(jìn)展相應(yīng)的配置,這些工作都是通過(guò)把握傳輸來(lái)完成。每個(gè)USB設(shè)備都必需實(shí)現(xiàn)一個(gè)0號(hào)端點(diǎn)。2~3個(gè)階段:設(shè)置階段、數(shù)據(jù)階段〔很多據(jù)把握沒(méi)有此階段〕以及狀態(tài)階段。依據(jù)數(shù)據(jù)階段的數(shù)據(jù)傳輸?shù)姆较?,把握傳輸又可分?種類(lèi)型:把握讀取〔讀取USB描述符〕、把握寫(xiě)入〔USB設(shè)備〕以及很多據(jù)把握。以下介紹各階段的工作。階段一:設(shè)置階段USB設(shè)備在正常使用之前,必需先配置,本階段由主機(jī)將信息傳送給USB設(shè)備,定義對(duì)USB設(shè)備的懇求信息〔如:讀設(shè)備描述符〕。主機(jī)一般會(huì)從USB設(shè)備獵取配置信息后再確定此設(shè)備有哪些功能。作為配置的一局部,主時(shí)機(jī)設(shè)置設(shè)備的配置值。我們統(tǒng)稱這一階段為設(shè)置階段。設(shè)置階段由設(shè)置事務(wù)完成,也就是該階段包含了SETUP令牌信息包、緊隨其后的DATA0數(shù)據(jù)信息包〔該信息包里的數(shù)據(jù)即為設(shè)備懇求,本章將后續(xù)介紹〕以及ACK握手信息包。它的作用是執(zhí)行一個(gè)設(shè)置的數(shù)據(jù)交換,并定義此把握傳輸?shù)膬?nèi)容。階段二:數(shù)據(jù)傳輸階段數(shù)據(jù)傳輸階段是用來(lái)傳輸主機(jī)與設(shè)備之間的數(shù)據(jù)。把握讀取是將數(shù)據(jù)從設(shè)備讀到主機(jī)上,讀取的數(shù)據(jù)USB16-8所示。對(duì)每一個(gè)數(shù)據(jù)信息包而言,首先,主時(shí)機(jī)發(fā)送一個(gè)IN令牌信息包,表示要讀數(shù)據(jù)進(jìn)來(lái)。然后,設(shè)備將數(shù)據(jù)通過(guò)DATA1數(shù)據(jù)信息包回傳給主機(jī)。最終,主機(jī)將以以下的方式加以響應(yīng):當(dāng)數(shù)據(jù)已經(jīng)正確接收時(shí),主機(jī)送出ACK令牌信息包;當(dāng)主機(jī)正在勞碌時(shí),發(fā)出NAK握手信息包;當(dāng)發(fā)生了錯(cuò)誤時(shí),主機(jī)發(fā)出STALL握手信息包。把握寫(xiě)入則是將數(shù)據(jù)從主機(jī)傳到設(shè)備上,所傳的數(shù)據(jù)即為對(duì)USB設(shè)備的配置信息,該過(guò)程16-9所示。對(duì)每一個(gè)數(shù)據(jù)信息包而言,主機(jī)將會(huì)送出一個(gè)OUT令牌信息包,表示數(shù)據(jù)要送出去。緊接著,主機(jī)將數(shù)據(jù)通過(guò)DATA0數(shù)據(jù)信息包傳遞至設(shè)備。最終,設(shè)備將以以下方式加以響應(yīng):當(dāng)數(shù)據(jù)已經(jīng)正確接收時(shí),設(shè)備送出ACK令牌信息包;當(dāng)設(shè)備正在勞碌時(shí),NAK握手信息包;當(dāng)發(fā)生了錯(cuò)誤時(shí),設(shè)備發(fā)出STALL握手信息包。階段三:狀態(tài)階段狀態(tài)階段用來(lái)表示整個(gè)傳輸?shù)倪^(guò)程已經(jīng)完全完畢了。請(qǐng)留意,狀態(tài)階段傳輸?shù)姆较虮匦枧cINOUT令牌信息包;反之,OUTIN令牌信息包。對(duì)于把握讀取而言,主時(shí)機(jī)送出OUT0DATA1信息包。而此時(shí),設(shè)備也會(huì)做出相對(duì)應(yīng)的ACK握手信息包、NAKSTALL握手信息包。相對(duì)地對(duì)于把握寫(xiě)入傳IN令牌信息包,然后設(shè)備送出表示完成狀態(tài)階段的0DATA1信息包,主機(jī)再做出相對(duì)應(yīng)的動(dòng)作:送ACK握手信息包、NAKSTALL握手信息包。實(shí)時(shí)傳輸實(shí)時(shí)傳輸適用于必需以固定速率抵達(dá)或在指定時(shí)刻抵達(dá),可以容忍間或錯(cuò)誤的數(shù)據(jù)上。實(shí)時(shí)傳輸一般用于麥克風(fēng)、喇叭等設(shè)備。實(shí)時(shí)傳輸只需令牌與數(shù)據(jù)兩個(gè)信息包階段,沒(méi)有握手包,故數(shù)據(jù)傳錯(cuò)時(shí)不會(huì)重傳。批量傳輸用于傳輸大量數(shù)據(jù),要求傳輸不能出錯(cuò),但對(duì)時(shí)間沒(méi)有要求,適用于打印機(jī)、存儲(chǔ)設(shè)備等。中斷傳輸中斷傳輸方式總是用于對(duì)設(shè)備的查詢,以確定是否有數(shù)據(jù)需要傳輸。因此中斷傳輸?shù)姆较騏SB設(shè)備到主機(jī)。設(shè)備列舉描述符USBUSB外圍設(shè)備的“身份證”一樣,具體地記錄著外圍設(shè)備相關(guān)的一切信息。為了描述不同的數(shù)據(jù),就需以不同類(lèi)型的USB描述符來(lái)加以描述,它共有以下幾種類(lèi)型:設(shè)備描述符、配置描述符、接口描述符和端點(diǎn)描述符,這幾個(gè)描述符是必需具有的,下面將結(jié)合實(shí)例具體介紹;其他的描述符,例如,字符串描述符、數(shù)種不同的群組描述符以及報(bào)告描述符則可以依據(jù)不同的設(shè)備進(jìn)展選擇。設(shè)備描述符設(shè)備描述符具有18字節(jié)的長(zhǎng)度,并且是主機(jī)向設(shè)備懇求的第一個(gè)描述符。以以下出設(shè)備描述符的范例、數(shù)值以及各個(gè)字段的意義:DeviceDesc:;表示設(shè)備描述符.byte$12;bLength18個(gè)字節(jié).byte$01;bDescriptorType域描述符類(lèi)型,1代表設(shè)備.byte$10,$01;bcdUSBUSB1.10標(biāo)準(zhǔn),$2102.10標(biāo)準(zhǔn).byte$00;bDeviceClass域,群組碼,0表示每個(gè)接口都有自身的群信息,;不同的接口操作相互獨(dú)立.byte$00;bDeviceSubClass域,設(shè)備次群組〔00〕.byte$00;bDeviceProtocol域,設(shè)備協(xié)議〔0表示無(wú)群組特定協(xié)議〕.byte$08;bMaxPacketSize00的最大信息包大小〔8、16、3264〕.byte$70,$0C;idVendorID〔2字節(jié)〕.byte$00,$00;idProductID〔2字節(jié)〕.byte$00,$01;bcdDeviceBCD表示設(shè)備發(fā)行序號(hào)〔2字節(jié)〕.byte$01;iManufacturer域,制造商的字符串描述符索引〔1字節(jié)〕,本實(shí)例中指;String1Desc處的字符串描述符.byte$02;iProduct域,產(chǎn)品的字符串描述符索引〔1字節(jié)〕,本實(shí)例中指;String2Desc處的字符串描述符.byte$00;iSerialNumber域,設(shè)備序號(hào)的字符串描述符索引〔1字節(jié)〕,;String0Desc處的字符串描述符.byte$01;bNumConfigurations1配置描述符配置描述符具有9字節(jié)的長(zhǎng)度,針對(duì)設(shè)備賜予配置的信息。以以下出配置描述符的范例、數(shù)值以及各個(gè)字段的意義:ConfigDesc:;表示配置描述符.byte$09;bLength9個(gè)字節(jié)〔1字節(jié)〕.byte$02;bDescriptorType域,描述符類(lèi)型,2代表配置〔1字節(jié)〕.byte$20,$00;wTotalLength32個(gè)字節(jié),〔包括配置描述符;997字節(jié)〕.byte$01;bNumInterfaces域,該配置支持的接口數(shù)目〔1字節(jié)〕.byte$01;bConfigurationValue域,配置值,SetConfiguration懇求的配置值.byte$00;iConfiguration域,配置的字符串描述符的索引〔1字節(jié)〕.byte$C0;bmAttributes域,配置的屬性〔自供電,不具有遠(yuǎn)程喚醒的特征〕.byte$00;MaxPowerUSB設(shè)備操作時(shí),它從總線上;獲得的最大電源〔2mA為單位〕接口描述符接口描述符具有9字節(jié)的長(zhǎng)度,用來(lái)描述每一個(gè)設(shè)備的接口特性。以以下出接口描述符的范例、數(shù)值以及各個(gè)字段的意義:InterfaceDesc:;表示接口描述符.byte$09;bLength9個(gè)字節(jié).byte$04;bDescriptorType域,描述符類(lèi)型,4代表接口.byte$00;bInterfaceNumber0為基值〔表示一個(gè)接口〕.byte$00;bAlternateSetting0〔由于只有一個(gè)接口〕.byte$02;bNumEndpoints2.byte$FF;bInterfaceClass域,接口群組,$FF表示是供給商說(shuō)明書(shū).byte$01;bInterfaceSubClass域,接口次群組.byte$FF;bInterfaceProtocol域,接口協(xié)議,$FF表示該接口使用的;是供給商說(shuō)明的協(xié)議.byte$00;iInterface域,接口的字符串描述符的索引,本實(shí)例沒(méi)有端點(diǎn)描述符端點(diǎn)描述符具有7字節(jié)長(zhǎng)度,用來(lái)描述端點(diǎn)的屬性以及各個(gè)端點(diǎn)的位置。該實(shí)例中有兩個(gè)1描述符:Endpoint1Desc:;1描述符.byte$07;bLength7個(gè)字節(jié).byte$05;bDescriptorType域,描述符類(lèi)型,5代表端點(diǎn).byte$81;bEndpointAddress域,端點(diǎn)地址〔[0x81=IN,0x02=OUT]〕,;1IN端點(diǎn).byte$03;bmAttributes域,傳輸類(lèi)型的屬性設(shè)置為中斷傳輸;〔0=把握,1=實(shí)時(shí),2=批量,3=中斷〕.byte$08,$00;wMaxPacketSize8個(gè)字節(jié).byte$0A;bIntervalms10ms2描述符:Endpoint2Desc:;2描述符.byte$07;bLength7個(gè)字節(jié).byte$05;bDescriptorType域,描述符類(lèi)型,5代表端點(diǎn).byte$02;bEndpointAddress域,端點(diǎn)地址〔[0x81=IN,0x02=OUT]〕,;2OUT端點(diǎn).byte$03;bmAttributes域,傳輸類(lèi)型的屬性設(shè)置為中斷傳輸;〔0=把握,1=實(shí)時(shí),2=批量,3=中斷〕.byte$08,$00;wMaxPacketSize8個(gè)字節(jié).byte$0A;bIntervalms10msUSB設(shè)備懇求在USB接口的通信協(xié)議中,由于主機(jī)是取得確定的主控權(quán),因此,主機(jī)與設(shè)備之間就必需遵循某種已溝通的特定命令格式,以到達(dá)通信的目的。而這個(gè)命令格式就是USB標(biāo)準(zhǔn)書(shū)中所制定的“設(shè)備懇求”。這個(gè)設(shè)備懇求的設(shè)置、去除與取得都須通過(guò)把握傳輸?shù)臄?shù)據(jù)交換來(lái)16-3中列出了標(biāo)準(zhǔn)設(shè)備懇求的數(shù)據(jù)格式內(nèi)容。16-3各字段含義解釋如下。bmRequestType域打算了特定懇求的特征,該域的D7表示在把握傳輸?shù)臄?shù)據(jù)階段,wLength0,表示沒(méi)有數(shù)據(jù)階段,該位可以無(wú)視;D[6:5]表示了該懇求所屬的類(lèi)型,USBUSB設(shè)備必需支持的一系列的標(biāo)準(zhǔn)懇求,此外,群組和供給商也可以定義一些其他的懇求;D[4:0]表示接收端,懇求可以針對(duì)設(shè)備、接口或設(shè)備的一個(gè)端點(diǎn),當(dāng)針對(duì)一個(gè)接口或端點(diǎn)時(shí),wIndex域打算了是哪個(gè)接口或端點(diǎn)。bRequestbmRequestType0,可以依據(jù)USB指定的一系列的標(biāo)準(zhǔn)懇求,結(jié)合該域的值,知道這是什么懇求。將在下面介紹這些懇求。wValue域的值依據(jù)懇求的不同而不同,用來(lái)傳遞一個(gè)參數(shù)給設(shè)備。wIndex域的值依據(jù)懇求的不同而不同,用來(lái)指定一個(gè)接口或端點(diǎn)。wLength域表示把握傳輸?shù)臄?shù)據(jù)階段中傳輸數(shù)據(jù)的字節(jié)大小,數(shù)據(jù)傳輸?shù)姆较蛴蒪mRequestTypeD70,表示沒(méi)有數(shù)據(jù)階段。下面結(jié)合實(shí)例分別介紹幾個(gè)主要的設(shè)備懇求。去除特性(ClearFeature)該懇求是用來(lái)取消一個(gè)特性,其格式如下:bmRequestTypebRequestwValuewIndexwLengthData00000000B(設(shè)備)00000001B(接口)00000010B(端點(diǎn))CLEAR_FEATURE〔01H〕0接口0無(wú)wValue表示特性選擇器,它對(duì)應(yīng)的值為:0=端點(diǎn),1=設(shè)備。當(dāng)某個(gè)特性不允許取消,或該特性根本不存在,或者是指向一個(gè)根本不存在的接口或端點(diǎn)時(shí),該懇求將會(huì)導(dǎo)致設(shè)備懇求失敗。假設(shè)端點(diǎn)被固件設(shè)為停頓狀態(tài),主機(jī)軟件(總線驅(qū)動(dòng)程序)0CLEAR_FEATURE命令去除該端點(diǎn)的停頓狀態(tài),本實(shí)例中就是這樣使用該懇求的。取得描述符(GetDescriptor)USB設(shè)備中存在的特定的描述符,其格式如下:bmRequestTypebRequestwValuewIndexwLengthData10000000BGET_DESCRIPTOR〔06H〕0IDwValue的高字節(jié)表示要取得描述符類(lèi)型,低字節(jié)表示描述符的索引值,描述的類(lèi)型有:1表示設(shè)備描述符,2表示配置描述符,3表示字符串描述符,4表示接口描述符,5表示端點(diǎn)描述符。wIndex0ID;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論