新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于STM32的USB枚舉過程學習筆記(一)

基于STM32的USB枚舉過程學習筆記(一)

作者: 時間:2016-11-19 來源:網(wǎng)絡 收藏
之前使用ST官方的庫以及網(wǎng)絡的資料,完成了使用USB HID類進行STM32和PC機的通訊。由于其他原因并沒有深入的分析,雖然實現(xiàn)了功能,但是關于USB設備的枚舉,以及具體的通訊方式都沒有清晰的概念,所以現(xiàn)在回頭重新學習USB相關知識。主要參考資料是《圈圈教你玩USB》、USB枚舉過程圖解,ST官方的USB HID例程。
一,USB數(shù)據(jù)包
1.USB數(shù)據(jù)包分類

USB總線上的數(shù)據(jù)傳輸以包為基本的單位。USB協(xié)議規(guī)定了四種包:令牌包、數(shù)據(jù)包、握手包、特殊包。不同的包通過包中的8位PID域區(qū)分。

本文引用地址:http://2s4d.com/article/201611/318465.htm
  • 令牌包

令牌包用于啟動一次USB傳輸,USB的數(shù)據(jù)傳輸必須由主機發(fā)起。令牌包有四種:

輸出令牌包(OUT):用來通知設備將要輸出一個數(shù)據(jù)包。 數(shù)據(jù)方向 主機-->設備

輸入令牌包(IN):用來通知設備將要返回一個數(shù)據(jù)包。數(shù)據(jù)方向 設備-->主機

建立令牌包(SETUP):通知設備將要輸出一個數(shù)據(jù)包,類似OUT包。不過SETUP包只能往端點0發(fā)包,只用在控制傳輸中。

幀起始包(SOF):用于幀計數(shù),USB全速設備每毫秒產(chǎn)生一幀,USB高速設備每125μS產(chǎn)生一幀。

OUT , IN, SETUP包的結構:同步域+8位PID+7位地址+4位端點號+5位CRC校驗+包結束符EOP

  • 數(shù)據(jù)包

數(shù)據(jù)包用來傳輸數(shù)據(jù),分成DATA0. DATA1 。數(shù)據(jù)格式如下

同步域+8位PID+N個字節(jié)的數(shù)據(jù)+CRC16校驗+包結束符EOP

  • 握手包

握手包用來表示一個傳輸是否被對方確認,有ACK,NAK,STALL,NYET。

ACK:表示正確的接收數(shù)據(jù)并且有足夠的空間容納數(shù)據(jù)。主機和設備都可以使用ACK來確認,NAK,STALL,NYET只能夠用于設備返回,主機不能使用。

NAK:表示沒有數(shù)據(jù)需要返回,或者數(shù)據(jù)正確接收但是沒有空間容納。當主機收到NAK后,知道設備還未準備好,主機會在合適的時候重新進行數(shù)據(jù)傳輸。

STALL:表示設備無法執(zhí)行該請求,或者端點已經(jīng)被掛起。

NYET:USB高速設備中用。

握手包的格式:同步域+8位PID+包結束符EOP

2. 數(shù)據(jù)包的處理

在傳輸過程中,具體的處理細節(jié)由USB接口的芯片處理完成。

當USB接口芯片正確接收到數(shù)據(jù)時,如果有空間保存,則它將數(shù)據(jù)保存并返回ACK,同時,設置一個標志表示已經(jīng)正確接收到數(shù)據(jù);如果沒有空間保存數(shù)據(jù),則自動返回NAK。

收到輸入請求時,如果有數(shù)據(jù)需要發(fā)送,則發(fā)送數(shù)據(jù),并等待接收ACK。只有到數(shù)據(jù)成功發(fā)送出去(即接收到ACK標志后),它才設置標志,表示數(shù)據(jù)已成功發(fā)送;如果無數(shù)據(jù)需要發(fā)送,則它自動返回NAK。

通常只需根據(jù)芯片提供的一些標志,準備要發(fā)送的數(shù)據(jù)到端點,或者從端點讀取接收到的數(shù)據(jù)即可。

二 ,USB事務

雖然USB定義了數(shù)據(jù)在總線上傳輸?shù)幕締挝皇前瑸榱藗鬏敂?shù)據(jù),必須按照一定的關系把這些不同的包組織成事務才能傳輸數(shù)據(jù)。事務通常由兩個或者三個包組成:令牌包、數(shù)據(jù)包和握手包。

令牌包用來啟動一個事務,總是由主機發(fā)送;數(shù)據(jù)包用來傳送數(shù)據(jù),可以從主機到設備,也可以由設備到主機,方向由令牌包來指定;握手包用來指定數(shù)據(jù)傳輸結果。

三,USB傳輸類型

USB規(guī)定了4種傳輸類型:批量傳輸、等時傳輸、中斷傳輸、控制傳輸。其中前三個傳輸一次數(shù)據(jù)都是一個事務;控制傳輸包括三個過程,建立過程和狀態(tài)過程分別是一個事務,數(shù)據(jù)過程則可能包含多個事務。



關鍵詞: STM32USB枚舉過

評論


技術專區(qū)

關閉