資源描述:
《USB的HID通信協(xié)議》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、..USB事務處理是主機和設備之間數(shù)據傳輸?shù)幕締挝唬梢幌盗芯哂刑囟ǜ袷降男畔M成。因此,要了解完整的USB通信協(xié)議,必須從USB的信息傳輸單元包及其數(shù)據域談起。通過由下而上,從簡單至復雜的通信協(xié)議單位組成各種復雜的通信協(xié)議,進而構建出完整的通信協(xié)議。16.4.1包包(Packet)是USB系統(tǒng)中信息傳輸?shù)幕締卧?,所有?shù)據都是經過打包后在總線上傳輸?shù)?。首先了解一下包的組成。USB包由五部分組成,即同步(SYNC)字段、包標識符(PID)字段、數(shù)據字段、循環(huán)冗余校驗(CRC)字段和包結尾(EOP)字
2、段,包的基本格式如下:同步字段(SYNC)PID字段數(shù)據字段CRC字段包結尾字段(EOP)在USB的數(shù)據傳輸中,所有的傳輸包都起始于SYNC,接著是PID,后面是包中所包含的數(shù)據信息,接下來是用來檢測包中數(shù)據錯誤的循環(huán)冗余校驗信息,最后以包結尾作為結束標志。下面我們將一一介紹每個字段。1.同步(SYNC)字段SYNC字段由8位組成,作為每個數(shù)據信息包的前導。顧名思義,它是用來產生同步作用的,目的是使USB設備與總線的包傳輸率同步,它的數(shù)值固定為00000001。2.包標識符(PID)字段PID字段是緊隨
3、在SYNC字段后面,用來表示數(shù)據信息包的類型。在USB協(xié)議中,根據PID的不同,USB包有著不同的類型,分別表示具有特定的意義。如下所示:PID0PID1PID2PID3包標識符長度為一個字節(jié)(8個數(shù)據位),由4個位的包類型字段和4個位的校驗字段構成。PID是USB包類型的唯一標志,USB主機和USB設備在接收到包后,必須首先對包標識符解碼得到包的類型,并判斷其意義從而做出下一個反應。包標識符中的校驗字段是通過對類型字段的每個位求反碼產生的,它是用來對包類型字段進行錯誤檢測用的,旨在保證對包的標識符譯碼
4、的可靠性,如果4個檢驗位不是它們各自的類型位的反碼,則說明標識符中的信息有錯誤。表16-2中列出了信息包的類型,包括令牌、數(shù)據、握手或特殊四種信息包類型。為簡化對USB的認識,有關高速傳輸?shù)牟糠譀]有在表中列出。?3.數(shù)據字段在USB包中,數(shù)據字段是用來攜帶主機與設備之間要傳遞的信息,其內容和長度根據包標識符、傳輸類型的不同而各不相同。并非所有的USB包都必須有數(shù)據字段,例如握手包、專用包和SOF令牌包就沒有數(shù)據字段。在USB包中,數(shù)據字段可以包含設備地址、端點號、幀序列號以及數(shù)據等內容。在總線傳輸中,總
5、是首先傳輸字節(jié)的最低位,最后傳輸字節(jié)的最高位。(1)設備地址(ADDR)數(shù)據域ADDR數(shù)據域由7位組成,可用來尋址多達127個外圍設備。(2)端點(ENDP)數(shù)據域word教育資料..ENDP數(shù)據域由4位組成。通過這4個位最多可尋址出32個端點。這個ENDP數(shù)據域僅用在IN、OUT與SETUP令牌信息包中。對于慢速設備可支持端點0以及端點1作為中斷傳輸模式,而全速設備則可以擁有16個輸入端點(IN)與16個輸出端點(OUT)共32個端點。(3)幀序列號當USB令牌包的PID為SOF時,其數(shù)據字段必須為1
6、1位的幀序列號。幀序列號由主機產生,且每個數(shù)據幀自動加一,最大數(shù)值為0x7FF。當幀序列號達到最大數(shù)時將自動從0開始循環(huán)。(4)數(shù)據它僅存于DATA信息包內,根據不同的傳輸類型,擁有不同的字節(jié)大小,從0到1023字節(jié)(實時傳輸)。4.循環(huán)冗余校驗(CRC)字段根據不同的信息包類型,CRC數(shù)據域由不同數(shù)目的位所組成。其中重要的數(shù)據信息包采用CRC16的數(shù)據域(16個位),而其余的信息包類型則采用CRC5的數(shù)據域(5個位)。其中的循環(huán)冗余碼校驗CRC,是一種錯誤檢測技術。由于數(shù)據在傳輸時,有時候會發(fā)生錯誤,
7、因此CRC可根據數(shù)據算出一個校驗值,然后依此判斷數(shù)據的正確性。5.包結尾(EOP)字段包的發(fā)送方在包的結尾發(fā)出包結尾信號。它表現(xiàn)為差分線路的兩根數(shù)據線保持2比特低位時間和1比特空閑位時間。USB主機根據EOP判斷數(shù)據包的結束。16.4.2信息包格式根據信息包所實現(xiàn)的功能,其可以分為3種類型:令牌包、數(shù)據包和握手包。其中,令牌包定義了數(shù)據傳輸?shù)念愋?,?shù)據包中含有需要傳輸?shù)臄?shù)據,握手包指明了數(shù)據接收是否成功。1.令牌(token)包在USB系統(tǒng)中,只有主機才能發(fā)出令牌包。令牌包定義了數(shù)據傳輸?shù)念愋?,它是事?/p>
8、處理的第一階段。令牌包格式如下:8位8位7位4位5位SYNCPIDADDRENDPCRC5令牌包中較為重要的是SETUP、IN和OUT這三個令牌包。它們用來在根集線器和設備端點之間建立數(shù)據傳輸。一個IN包用來建立一個從設備到根集線器的數(shù)據傳送,一個OUT包用來建立從根集線器到設備的數(shù)據傳輸。IN包和OUT包可以對任何設備上的任何端點編址。一個SETUP包是一個OUT包的特殊情形,它是“高優(yōu)先級的”,也就是說設備必須接受它,即使設備正在進行數(shù)