1.7 USB設備描述符及其之間的關系
USB1.1
設備描述符
USB協議版本號 設備類型 端點0最大包大小 VID PID 設備版本號 廠商字符串索引 產品字符串索引 設備序列號索引 可能的配置
配置描述符
配置說包含的接口數、配置的編號、供電方式、是否支持遠程喚醒、電量需求
接口描述符
接口的編號、接口的端點數、接口所使用的類、子類、協議
端點描述符
端點號及方向 端點的傳輸類型 最大的包長度 查詢時間間隔等
字符串描述符 單獨獲取 獲取字符串請求 描述符索引號 語言ID來獲取
USB2.0
Device Qualifier Descriptior
Other Speed Configuration Description
還有些 類特殊 描述符 HID描述符 廠家自定義描述符
1.8 USB設備枚舉的過程
枚舉的傳輸方式 控制傳輸
控制傳輸的三個過程 :建立過程 可選數據過程 狀態過程
枚舉的詳細過程
1.獲取設備描述符 這里面需要注意管道0得到大小和設備描述符的大小 但是管道的最大包長度是在設備描述符的最前面八個字節
2. 設置地址
3.再次獲取設備描述符 ,但是這次的用分配的地址獲取全部的設備描述符
4. 獲取配置描述符 然后獲取配置集合
1.9 USB的包結構及傳輸過程
1.91 USB的包結構及包的分類
傳輸以包為單位· 包分為·不同的域
通用格式 同步域. PID+ EOP
同步域
全速和低速 01H
高速 0001H
低速和全速EOP 大約為兩個數據位的的SE0 即D+ D-都保持低電平
復位 10ms的SE0
高速 使用故意的位填充錯誤來表示。
包標識符PID 一共有八位 PID0-PID4
USB協議包括4類
令牌包 token packet PID1-0 01
數據包 data packet PID1-0 11
握手包 handshake PID1-0 10
特殊包 special packet PID1-0 00
IN 令牌 通知設備返回一個數據包
SETUP 用於控制傳輸 只是用 DATA0的數據包 只能發送到設備的控制端點,設備必須接受
SOF包 每個幀開始時候以廣播形式發送 十一位 不跟隨數據
1.9.3 數據包
數據包 DATA0 DATA1高速分裂事務和同步高速高帶寬傳輸 DATA2MDATA
這樣的好處可以預防確認型號損壞的情況發送
1.9.4 握手包
ACK 正確接受數據 並且有足夠的空間來容納數據
主機唯一能使用的握手包
NAK 沒有數據需要返回 數據正在接受 但是沒有足夠的空間來容納他們
主機接收到NAK以后會在以后合適的時機來重新傳輸
STALL 設備無法執行這個請求 或者端點已經被掛起了 它是一種錯誤的狀態 設備返回 STALL 后 需要主機進行干預材料解除這種STALL 狀態
NYET 只在USB2.0中的高速設備輸出事務中使用,表示本次數據成功接收,但是沒有足夠的空間來接收下一次數據,主機在下一次輸出數據時候,將先用PING命令牌來試探設備是否有空間接受數據,以避免不必要的浪費。
NAK不是出錯 出錯將什么都不返回

1.9.5 特殊包
令牌包
PER 打開低速端口的前導包 只使用全速模式
與握手包的結構一樣 全速設備將忽略這一要求
USB2.0新增
SPLIT
高速事務令牌包 通知集線器把高速數據轉換為全速或者低速數據發送給下面的端口
PING
與OUT結構一樣
PING發送以后需要等待ACK命令才能繼續發送數據包
握手包
ERR
1.9.6 如何處理數據包
USB芯片都會處理好數據 只需要規定好要發什么數據就行了
1.10 USB傳輸的四種類型
按照一定的關系把包組成事務
1.10.1 USB事務包
事務組成 令牌包 數據包 握手包
令牌包啟動事務 數據包 握手包(通常數據接受者發送)
批量 同步 和中斷傳輸 是一個事務
控制傳輸 建立過程 狀態事務 一個事務 數據過程 包含多個事務
1.10.2 批量傳輸
bulk transaction 一次 批量事務 傳輸數據 分三個階段
令牌包 數據包 握手包
批量讀 批量寫
批量輸入事務時 主機不允許使用NAK握手包
因為 USB所有的讀寫都是有主機發起的 所以主機既然發起接受請求 受到再拒絕 這種行為就太二了
1.10.3 中斷傳輸
所謂的中斷傳輸和單片機的中斷意義不同 是指 以不大於某個時間間隔內安排一次傳輸
1.10.4 同步傳輸
沒有應答是同步傳輸的一大特點
1.10.5 控制傳輸
建立過程
與批量事務傳輸不同之處
建立過程使用SETUP令牌包
SETUP只能使用 DATA0
握手包 只能用ACK

數據過程
數據傳輸過程中一旦方向改變 就進入狀態過程 數據過程第一個數據包必須輸出DATA1包,然后交替








