一、列舉過程--獲取裝置描述符。
該過程只是粗要獲取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 我們稱這種狀態為...