一、協議知識
1)PID格式,詳見圖1
(圖2)
3)Token 包格式(不包括SOF),詳見圖3
(圖3)
注:
a、 ADDR表示設備地址
b、 ENDP 表示端點號
c、 CRC5表示設備地址及端點號的校驗和
(圖5)
注:
a、 DATA 表示要傳輸的數據,全速USB的最大長度爲1023Bytes,高速USB 的最大長度爲 1024Bytes
b、 CRC16表示 DATA的校驗和
6)Handshake包格式,詳見圖6
(圖6)
二、USB傳輸包組(事務)實例分析
1)IN包組分類(懶得自己總結,直接
從HD-USB12的數據包過濾功能截取),詳見圖7
(圖7)
2)IN包組分析(通過HD-USB12監控軟件僅過濾出IN包組數據),詳見圖8
(圖8)
a、Index[691]:表示
主機向設備發送IN指令取數據,設備迴應沒數據;
b、Index[692 - 693]:表示主機向設備地址0(DEV = 00)端點0(EP
= 80, 最高位表示傳輸方向)發送IN指令取數據,設備迴應端點停止(STALL);
c、Index[701 -
703]:表示主機向設備地址0(DEV = 00)端點0(EP = 80,
最高位表示傳輸方向)發送IN指令取數據,設備收到指令後向主
機發送數據
Index[702],主機正確收到數據後迴應ACK
d、Index[701]的內容,詳見圖9
(圖9)
e、Index[702]的內容,詳
見圖10
(圖10)
f、Index[702]的數據發送時序,詳見圖11(只截取了部分,時序做的很漂亮,看着也很清晰)
(圖11)
注意時序圖的
Offset[0003]其傳輸的數據爲FF,根據USB採用的傳輸編碼(NRZI)前6位爲1後插入1位0,因些第7位的傳輸要傳輸2位(01),其時
間也佔用兩位的時間。(啊啊!有時序功能就是清楚,時序還有其它用途以後分解)
3)OUT包組分類,詳見圖12(直接從HD-USB12
的數據包過濾功能截取)
(圖12)
4)OUT包組分析(通過HD-USB12監控軟件僅過濾出OUT包組數據),
詳見圖13
(圖13)
a、Index[16 -
18]:表示主機向設備地址0(DEV = 00)端點0(EP = 00,
最高位表示傳輸方向)發送Out指令後,發送數據Index[17](主機發出空迴應所以Index[17]沒有數據),設備收到數據後迴應ACK;
b、
Index[16]的內容,詳見圖14
(圖14)
c、Index[17]的內
容,詳見圖15
(圖15)
5)SETUP
包組分類,詳見圖16(直接從HD-USB12的數據包過濾功能截取)
(圖16)
6)SETUP包組分析(通過HD-USB12監控軟件僅過濾出
SETUP包組數據),詳見圖17
(圖17)
a、
Index[23 - 25]:表示主機向設備地址0(DEV = 00)端點0(EP = 00,
最高位表示傳輸方向)發送SETUP指令後,發送數據Index[24],設備收到數據後迴應ACK;
b、Index[23]的內容,詳見圖18
(圖18)
c、
Index[24]的內容,詳見圖19
(圖19)
以
上數據包分析是根據現有特定設備捕獲得到,並不完整涉及到所有事務包組,如IN+DATA+NAK、OUT+DATA+NAK、
SETUP+DATA+NAK等等。