USB數據是由二進制數字串構成的,首先數字串構成域(有七種),域再構成包,包再構成事務(IN、OUT、SETUP),事務最后構成傳輸(中斷傳輸、并行傳輸、批量傳輸和控制傳輸)。下面介紹一下域、包和事務。
域是USB數據最小的單位,由若干位組成(多少位由具體的域決定),域可分為七個類型:
1、同步域(SYNC)
所有的USB包都由SYNC開始,高速包的SYNC寬度為32bit,全速/低速包的SYNC段度為8bit。實際接收到的SYNC長度由于USB HUB的關系,可能會小于該值。八位的值固定為0000 0001,用于本地時鐘與輸入同步。
2、標識域(PID)
由四位標識符 + 四位標識符反碼構成,表明包的類型和格式,這是一個很重要的部分,這里可以計算出,USB的標識碼有16種。USB2.0使用了十六種標識碼,標識碼的作用是用來說明包的屬性的,標識碼是和包聯系在一起的,標識碼分別有以下十六種:
令牌包 :
0x01:輸出(OUT)啟動一個方向為主機到設備的傳輸,并包含了設備地址和標號。
0x09:輸入(IN) 啟動一個方向為設備到主機的傳輸,并包含了設備地址和標號。
0x05:幀起始(SOF)表示一個幀的開始,并且包含了相應的幀號。
0x0d:設置(SETUP)啟動一個控制傳輸,用于主機對設備的初始化。
數據包 :
0x03:偶數據包(DATA0)。
0x0b:奇數據包(DATA1)。
握手包:
0x02:確認接收到無誤的數據包(ACK)。
0x0a:無效,接收(發送)端正在忙而無法接收(發送)信息。
0x0e:錯誤,端點被禁止或不支持控制管道請求。
特殊包0x0C前導,用于啟動下行端口的低速設備的數據傳輸。
3、地址域(ADDR):七位地址,代表了設備在主機上的地址,地址000 0000被命名為零地址,是任何設備第一次連接到主機時,在被主機配置、枚舉前的默認地址,由此可以知道為什么一個USB主機只能接127個設備的原因。
4、端點域(ENDP),四位,由此可知一個USB設備端點數量最大為16個。
5、幀號域(FRAM),11位,每一個幀都有一個特定的幀號,幀號域最大容量0x800,對于同步傳輸有重要意義。
6、數據域(DATA):長度為0~1023字節,在不同的傳輸類型中,數據域的長度各不相同,但必須為整數個字節的長度。
7、校驗域(CRC):對令牌包和數據包中非PID域進行校驗的一種方法,CRC校驗在通訊中應用很泛,是一種很好的校驗方法,CRC碼的除法是模2運算,不同于10進制中的除法。
-
usb
+關注
關注
60文章
7903瀏覽量
264056 -
USB數據
+關注
關注
0文章
4瀏覽量
6592
原文標題:USB數據格式
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論