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