**:
一,usb資料報
1. usb資料報分類
usb匯流排上的資料傳輸以包為基本的單位。usb協議規定了四種包:令牌包、資料報、握手包、特殊包。不同的包通過包中的8位pid域區分。
令牌包用於啟動 一次usb傳輸,usb的資料傳輸必須由主機發起。令牌包有四種:
輸出令牌包(out):用來通知裝置將要輸出乙個資料報。 資料方向 主機-->裝置
輸入令牌包(in):用來通知裝置將要返回乙個資料報。 資料方向 裝置-->主機
建立令牌包(setup):通知裝置將要輸出乙個資料報,類似out包。不過setup包只能往端點0發包,只用在控制傳輸中。
幀起始包(sof):用於幀計數,usb全速裝置每毫秒產生一幀,usb高速裝置每125μs產生一幀。
out , in, setup包的結構:同步域+8位pid+7位位址+4位端點號+5位crc校驗+包結束符eop
資料報用來傳輸資料,分成data0. data1 。資料格式如下
同步域+8位pid+n個位元組的資料+crc16校驗+包結束符eop
握手包用來表示乙個傳輸是否被對方確認,有ack,nak,stall,nyet。
ack:表示正確的接收資料並且有足夠的空間容納資料。主機和裝置都可以使用ack來確認,nak,stall,nyet只能夠用於裝置返回,主機不能使用。
nak:表示沒有資料需要返回,或者資料正確接收但是沒有空間容納。當主機收到nak後,知道裝置還未準備好,主機會在合適的時候重新進行資料傳輸。
stall:表示裝置無法執行該請求,或者端點已經被掛起。
nyet:usb高速裝置中用。
握手包的格式:同步域+8位pid+包結束符eop
2. 資料報的處理
在傳輸過程中,具體的處理細節由usb介面的晶元處理完成。
當usb介面晶元正確接收到資料時,如果有空間儲存,則它將資料儲存並返回ack,同時,設定乙個標誌表示已經正確接收到資料;如果沒有空間儲存資料,則自動返回nak。
收到輸入請求時,如果有資料需要傳送,則傳送資料,並等待接收ack。只有到資料成功傳送出去(即接收到ack標誌後),它才設定標誌,表示資料已成功傳送;如果無資料需要傳送,則它自動返回nak。
通常只需根據晶元提供的一些標誌,準備要傳送的資料到端點,或者從端點讀取接收到的資料即可。
二 ,usb事務
雖然usb定義了資料在匯流排上傳輸的基本單位是包,為了傳輸資料,必須按照一定的關係把這些不同的包組織成事務才能傳輸資料。事務通常由兩個或者三個包組成:令牌包、資料報和握手包。
令牌包用來啟動乙個事務,總是由主機傳送;資料報用來傳送資料,可以從主機到裝置,也可以由裝置到主機,方向由令牌包來指定;握手包用來指定資料傳輸結果。
三,usb傳輸型別
usb規定了4種傳輸型別:批量傳輸、等時傳輸、中斷傳輸、控制傳輸。其中前三個傳輸一次資料都是乙個事務;控制傳輸包括三個過程,建立過程和狀態過程分別是乙個事務,資料過程則可能包含多個事務。
USB列舉過程詳述
本系統中所謂usb裝置與主機是通過檢測vcc上拉電阻的變化來確定是否有裝置連線的。在d12內部整合了1.5k 的上拉電阻,預設狀態下不與vcc相連,程式執行時可以向d12傳送連線命令使1.5k 電阻連線到vcc,這樣主機便檢測到有裝置連線。它的列舉過程分析如下。裝置連線到匯流排後,裝置從匯流排獲得5...
USB裝置列舉過程
當裝置連線到主機時,按照以下順序進行列舉 1.連線了裝置的hub 在host 查詢其狀態改變端點時返回對應的bitmap,告知host 某個port 狀態發生了改變。2.主機向hub 查詢該port 的狀態,得知有裝置連線,並知道了該裝置的基本特性。3.主機等待 至少100ms 裝置上電穩定,然後向...
USB列舉過程(1)
總的過程 host檢測到device,reset 獲取裝置描述符 host發獲取裝置描述符請求 setup data0 divice返回裝置描述符 in ack host說明已獲取裝置描述符 out data0空資料 lsb先發 對裝置reset,開始設定新位址 新位址 out data0 new ...