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