《圈圈教你玩 USB》學習筆記 令牌包

2021-10-02 04:23:34 字數 955 閱讀 1894

令牌包用來啟動一次 usb 傳輸。因為 usb 是主從結構的拓撲結構,所以所有的資料傳輸都是由主機發起的,裝置只能被動地接收資料。這就需要主機傳送乙個令牌來通知哪個裝置進行響應,如何響應。

令牌包有 4 種,分別為輸入(in),輸出(out),建立(setup)和幀起始(sof)。

out通知裝置將要輸出資料

in通知裝置將要輸入資料

sof通知裝置這是乙個幀起始包

setup

通知裝置將要開始乙個控制傳輸

輸出令牌包用來通知裝置將要輸出乙個資料報

輸入令牌包用來通知裝置返回乙個令牌包

建立令牌包只用在控制傳輸中,它跟輸出令牌包的作用一樣,也是通知裝置將要輸出乙個資料報,兩者的區別在於:setup 令牌包後只使用 data0 資料報,且只能發到裝置的控制端點,並且裝置必須要接收,而 out 令牌包則沒有這些限制

幀起始包在每幀(或微幀)開始時傳送,它以廣播的形式傳送,所有 usb 全速裝置和高速裝置都可以接收 sof 包。usb 全速裝置每 ms 產生乙個幀,而高速裝置每 125us 產生乙個微幀。usb 主機會對當前幀號進行計數,在每次幀開始時(或者微幀開始時,每 ms 有 8 個微幀,這 8 個微幀的幀號是一樣的,即相同的 sof),通過 sof 包傳送幀號。sof 中的幀號是 11 位 的,在 4 個令牌包中,只有 sof 令牌包之後不跟隨資料傳輸,其他的都有資料傳輸。

每個令牌包,最後都有乙個 crc5 的校驗,它只校驗 pid 之後的資料,不包含 pid 本身,因為 pid 本身已經有 4 個取反的位進行校驗了。

sof 令牌包的結構如下所示

同步域8 位包標識 pid

11 位幀號

5 位 crc5 校驗

eopout/in/setup 令牌包的結構如下所示

同步域8 位包標識 pid

7 位位址

4 位端點號

5 位 crc5 校驗

eop端點域:要訪問的端點號

《圈圈教你玩 USB》學習筆記 列舉

列舉過程的詳細介紹 1 usb 主機檢測到 usb 裝置插入後,就會先對裝置復位。usb 裝置在匯流排復位後其位址為 0 這樣主機就可以通過位址 0 和那些剛剛插入的裝置通訊。2 usb 主機往位址為 0 的裝置的端點 0 傳送獲取裝置描述符的標準請求 這是乙個控制傳輸的建立過程 裝置收到該請求後,...

《圈圈教你玩 USB》學習筆記 特殊包

特殊包是一些在特殊場合使用的包。總共有 4 中 pre,err,split 和 ping。pre前導 令牌包 err錯誤 握手包 split 事務 令牌包 ping ping 測試 令牌包 1 pre 是通知集線器開啟其低速埠的一種前導包。pre 只使用在 全速模式中。平時,為了防止全速訊號使低速裝...

《手把手教你玩脫口秀》筆記

笑話的原理 秘訣02任何你想象它存在,但無法感知到的東西,都是假設 笑話的三大機制 目標假設 不帶鋪墊的笑話 秘訣03 再解讀的目的是打破目標假設 再解讀 不帶笑點的笑話 搞笑的人必須能夠對一件事情有兩種解讀 連線點 至少有兩種解讀的事情 笑話寶藏 探索秘密通道 笑話寶藏的選擇 探索其他通道 秘訣0...