USB學習 列舉1

2021-07-05 16:16:51 字數 1042 閱讀 3411

一、列舉過程--獲取裝置描述符。

該過程只是粗要獲取usb裝置的預設管道最大包長度。

在初始化的過程中,usb裝置使能所有的資料完成傳輸中斷。

1.主機傳送setup令牌包(80 06 00 01 00 40 00)

2.端點0暫存器相對應的setup位置位,表明收到setup令牌包,所傳輸的資料報被sir儲存到端點0描述符表的rxaddr,長度位元組數儲存到rxcount.裝置傳送ack到主機。

3.setup0_process處理函式:把pma收到的緩衝區資料按協議填充到pinformation結構體 

4.data_setup()函式:分析接收到的資料,並且進行處理。這裡是把所請求的描述符資訊填入緩衝區。

5.datastagein():若有資料要傳送,則把需要傳送的資料存放在pma緩衝區中。

6.執行ctr_lp(),使能端點傳送。

7.主機傳送in令牌包,讀取裝置放在緩衝區的資料,通過sie資料返回主機。主機收到資料後返回ack,表明資料階段已經完成。有in0_process()進行最後處理。

8.主機傳送out令牌包,裝置返回ack,狀態過程結束。

二、列舉過程--設定位址

該過程是主機分配位址給裝置,在設定完以後,裝置即為該分配的位址。

設定位址建立階段       

1.主機傳送setup令牌包(00 05 02 00 00 00 00 00 ),

2.在裝置接受主機分配的位址後,usb裝置返回ack,

3.主機傳送in令牌包,而裝置返回資料為0的包。

4.主機收到資料為0的包後,返回ack,在此,device即可使用該新的位址。

三、列舉過程--從新的位址獲取裝置描述符

1.建立階段

setup_process()中主機傳送了8個位元組資料,呼叫data_setup0()函式進行處理

呼叫datastagein()函式進行實際資料傳輸。

2.資料階段

主機發哦是哪個in包,裝置返回資料,主機返回ack,呼叫datastagein()函式

3.狀態階段,主機發out包,0位元組,裝置ack.

USB列舉過程(1)

總的過程 host檢測到device,reset 獲取裝置描述符 host發獲取裝置描述符請求 setup data0 divice返回裝置描述符 in ack host說明已獲取裝置描述符 out data0空資料 lsb先發 對裝置reset,開始設定新位址 新位址 out data0 new ...

USB驅動 USB列舉

一 列舉詳細過程 usb主機在檢測到usb裝置插入後,就要對裝置進行列舉了。為什麼要列舉呢?列舉就是主機host從裝置讀取一些資訊,知道裝置是什麼樣的裝置,如何進行通訊,這樣主機就可以根據這些資訊來載入合適的驅動程式。除錯usb裝置,很重要的一點就是usb的列舉過程,只要列舉成功了,那麼就已經成功大...

USB協議學習1

1.usb歷史 usb全稱 universal serial bus 序列匯流排 usb1.0 usb1.1 只支援1.5mb s的低速模式和12mb s的全速模式 usb2.0 又加入了高速模式480mb s usb3.0 5gb s 低速模式 d 有上拉電阻 d 為0 d 為1 我們稱這種狀態為...