分類:行業(yè)最新資訊瀏覽:834發(fā)表時間:2022-06-23 10:49:21
USB通信協(xié)議
包
包(Packet)是USB系統(tǒng)中信息傳輸?shù)幕締卧?,所有?shù)據(jù)都是經(jīng)過打包后在總線上傳輸?shù)?。USB包由五部分組成,即同步字段(SYNC)、包標(biāo)識符字段(PID)、數(shù)據(jù)字段、循環(huán)冗余校驗字段(CRC)和包結(jié)尾字段(EOP),包的基本格式如下圖:
1.SYNC字段:由8位組成,作為每個數(shù)據(jù)封包的前導(dǎo),用來產(chǎn)生同步作用,使USB設(shè)備與總線的包傳輸率同步,它的數(shù)值固定為00000001。
2.PID字段:用來表示數(shù)據(jù)封包的類型。包標(biāo)識符中的校驗字段是通過對類型字段的每個位求反碼產(chǎn)生的, PID字段如下圖所示:
PID字段包的類型
3. 數(shù)據(jù)字段:是用來攜帶主機與設(shè)備之間要傳遞的信息,其內(nèi)容和長度根據(jù)包標(biāo)識符、傳輸類型的不同而各不相同。在USB包中,數(shù)據(jù)字段可以包含設(shè)備地址、端點號、幀序列號以及數(shù)據(jù)等內(nèi)容。在總線傳輸中,總是首先傳輸字節(jié)的最低位,最后傳輸字節(jié)的最高位。
(1) 設(shè)備地址(ADDR)數(shù)據(jù)域
ADDR數(shù)據(jù)域由7位組成,可用來尋址多達127個外圍設(shè)備。
(2) 端點(ENDP)數(shù)據(jù)域
ENDP數(shù)據(jù)域由4位組成。通過這4個位最多可尋址出32個端點。這個ENDP數(shù)據(jù)域僅用在IN、OUT與SETUP令牌信息包中。對于慢速設(shè)備可支持端點0以及端點1作為中斷傳輸模式,而全速設(shè)備則可以擁有16個輸入端點(IN)與16個輸出端點(OUT)共32個端點。
(3) 幀序列號
當(dāng)USB令牌包的PID為SOF時,其數(shù)據(jù)字段必須為11位的幀序列號。幀序列號由主機產(chǎn)生,且每個數(shù)據(jù)幀自動加一,最大數(shù)值為0x7FF。當(dāng)幀序列號達到最大數(shù)時將自動從0開始循環(huán)。
(4) 數(shù)據(jù)
它僅存于DATA信息包內(nèi),根據(jù)不同的傳輸類型,擁有不同的字節(jié)大小,從0到1023字節(jié)(實時傳輸)。
4.循環(huán)冗余碼CRC字段由不同數(shù)目的位所組成。根據(jù)不同的信息包類型,CRC數(shù)據(jù)域由不同數(shù)目的位所組成。其中重要的數(shù)據(jù)信息包采用CRC16的數(shù)據(jù)域(16個位),而其余的信息包類型則采用CRC5的數(shù)據(jù)域(5個位)。其中的循環(huán)冗余碼校驗CRC,是一種錯誤檢測技術(shù)。由于數(shù)據(jù)在傳輸時,有時候會發(fā)生錯誤,因此CRC可根據(jù)數(shù)據(jù)算出一個校驗值,然后依此判斷數(shù)據(jù)的正確性 。
5.包結(jié)尾字段即發(fā)送方在包的結(jié)尾發(fā)出包結(jié)尾信號。USB主機根據(jù)EOP判斷數(shù)據(jù)包的結(jié)束。