日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

USB数据传输

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USB数据传输 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在USB系統中,正常狀態下根集線器或集線器會一直周期性地發送SOF包,高速USB 總線的幀周期為125us,全速以及低速 USB 總線的幀周期為 1ms。如果USB線上一直處于空閑(Idle)狀態超過3ms,設備應該把它當作一個掛起(Suspended)信號,要求設備在10ms內進入掛起狀態,并把設備所需的電流大小降到規定的值。設備處于掛起狀態時,任何總線上的活動(非空閑信號)都可以把設備喚醒/恢復,從而退出低功耗模式。主機需要繼續周期性地發送SOF包,否則設備又將進入suspend。

?

?

包結構

USB是以包為單位進行傳輸的,包只能在幀內傳輸。一個包包含多個域,不同的包包含不同的域,但都是以同步域(SYNC)開始,緊跟著包標識符(PID),最終以包結束符(EOP)結束。

同步域:表示包要開始傳輸了,同時可以用來同步主機和設備的時鐘。對于低速設備和全速設備,同步域使用的是00000001b;對于高速設備,同步域使用的是31個0后面跟1個1。

包標識符:表示數據包類型。總共8bit,bit0~3表示PID值,bit4~7為PID的取反,用來校驗PID。如上圖PID為0101,表示SOF包。

包結束符:表示數據包結束。

?

?

包類型

USB協議規定了四類包:令牌包(token)、數據包(data)、握手包(handshake)和特殊包(special)。

令牌包:用來啟動一次傳輸。由于USB是主從結構,一個USB主機可以對應多個設備,因此每次開啟傳輸之前必須先使用令牌包和目標設備進行握手,告知設備本次傳輸的功能是什么、由誰來響應。

令牌包有4種:輸出(OUT)、輸入(IN)、建立(SETUP)和幀起始(SOF)

  • 輸出:通知某設備的某端點,主機將要輸出一個數據包,請準備查收。
  • 輸入:通知某設備的某端點,準備向主機輸入一個數據包,請準備發送。
  • 建立:通知某設備的某端點(只能是端點0),主機將要輸出一個數據包(只能是DATA0),該數據包是一個請求,請準備查收。
  • 幀起始:USB周期性發送幀起始包,全速設備每毫秒產生一個幀。USB主機會對當前幀號進行計數,通過SOF包發送幀號。

數據包:用來傳輸數據。主機和設備都會維護自己的一個數據包類型切換機制,以解決握手包被損壞的情形:當數據包成功發送或者接收時,數據包類型切換。如果對方下一次使用的數據包類型跟自己不一致,則說明它剛剛已經成功接收到數據包;如果對方下一次使用的數據包類型跟自己一致,則說明剛剛的數據包沒有發送成功,這是上一次的重試操作。

握手包:用來表示一個傳輸是否被對方確認。

  • ACK:表示正確接收數據。
  • NAK:沒有數據返回,或數據正確接收但沒有足夠空間容納。主機接收到NAK后,會在合適時機重傳。
  • STALL:設備無法執行這個請求,或端點已經被掛起。
  • NYET:本次數據已經正確接收,但沒有足夠空間來接收下一次數據。

?

?

事務

由于USB是主從結構,每一次交互都必須由主機發起,這樣的過程稱為一次事務:

  • 主機通過令牌包發起。
  • 數據包傳送數據(可選)。
  • 最后由接收者通過握手包確認。
  • ?

    ?

    傳輸

    USB協議規定了4種傳輸類型:批量傳輸、等時傳輸、中斷傳輸和控制傳輸。傳輸由一個或多個事務組成,其中批量傳輸、等時傳輸和中斷傳輸都是一個事務;控制傳輸包括三個事務。

    批量傳輸:批量傳輸沒有規定數據包中數據的意義和結構,具體的數據結構要由設備自己定義。通常用在數據量大、對數據的實時性要求不高的場合。批量傳輸分為:批量輸出傳輸和批量輸入傳輸。

  • 批量輸出傳輸:由OUT令牌包發起的一次事務。
  • 批量輸入傳輸:由IN令牌包發起的一次事務。
  • 中斷傳輸:中斷傳輸是一種保證查詢頻率的傳輸。主機保證在不大于某個時間間隔內安排一次傳輸事務。中斷傳輸通常用在數據量不大,但是對時間要求嚴格的設備中。

    等時傳輸:等時傳輸用在數據量大、對實時性要求高的場合。等時傳輸過程中,主機不斷安排傳輸事務。出現數據錯誤的時候不進行重傳,因此也就沒有應答包。

    控制傳輸:控制傳輸分為三個過程,建立過程、數據過程(可選)和狀態過程。

  • 建立過程:由SETUP令牌包發起的一次事務(只能發給端點0,只能使用DATA0)。
  • 數據過程:數據過程是可選的,可以沒有、包含一個或多個事務。數據過程第一個數據包必須是DATA1包,然后每次正確傳輸一個數據包后就在DATA0和DATA1之間交替。
  • 狀態過程:狀態過程的傳輸方向和數據過程是相反的,狀態過程只使用DATA1包。
  • ?

    ?

    端點

    每個USB設備都有一個唯一的設備地址,設備地址是設備連接上主機時由主機分配的,主機主要依靠這個設備地址對USB設備進行訪問。但是在設備內部地址會被分的更細,設備會分出一些端點來,每個端點在設備都會有唯一的端點號,這個端點號是設計設備時給定的。

  • 端點號:一個設備最多可以包含16個端點,端點號為0-15。(每個USB設備必須要有端點0)
  • 方向:其中每個端點地址對應一個方向。(端點0是雙向的,既可以給主機發送數據,也可以從主機接收數據)
  • 屬性:一個具體的端點只能工作在一種傳輸模式下。例如:控制端點、批量端點、中斷端點、等時端點。(控制端點0,作為對設備枚舉和對設備進行基本的控制功能)
  • 控制端點:低速模式下,固定最大包長為8字節;全速模式下,可選8、16、32、64字節為最大包長;高速模式下,固定最大包長為64字節。

    等時端點:低速模式下,不支持等時傳輸;全速模式下,最大包長上限為1023字節;高速模式下,最大包長上限為1024字節;。

    中斷端點:低速模式下,最大包長上限為8字節;全速模式下,最大包長上限為64字節;高速模式下,最大包長上限為1024字節。

    批量端點:低速模式下,不支持批量傳輸;全速模式下,可選8、16、32、64字節為最大包長;高速模式下,固定最大包長為512字節。

    ?

    總結

    以上是生活随笔為你收集整理的USB数据传输的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。