色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

USB是如何工作的

FPGA之家 ? 來源:TopSemic嵌入式 ? 作者:TopSemic嵌入式 ? 2022-07-12 09:13 ? 次閱讀

1.USB概述

USB設備現在是用的非常普遍的一種接口了,它即插即用的特性給人們帶來了很大的方便。在嵌入式的應用中, USB經常被用來作為與上位機通信的接口,還用來通過U盤存儲數據等。USB按通訊速度可分為低速,全速和高速設備。在我們的應用中,低速和全速是最為普遍的,在此我們對USB從物理層到協議層做一個簡要的介紹。高速USB的原理是一樣的,在理解了低速和全速設備的工作原理后再去理解高速設備就比較簡單了,在此我們暫不討論。

低速(Low Speed, 1.5Mbps):鍵盤,鼠標,手寫筆

全速(Full Speed, 12Mbps):音頻

高速(High Speed, 480Mbps):視頻

USB協議是開放的,可以從官方網站usb.org下載。

2.主機,設備(Host, Device)

de08718c-017b-11ed-ba43-dac502259ad0.jpg

上圖是一個典型的USB全速主機和設備的連接示意圖。主機要有對外的供電能力,圖中可以看到作為主機的單片機,一個引腳用來控制三極管或MOSFET,提供5V的電源至USB口。設備供電有兩種方法:一種是通過USB總線,從主機提供的5V獲得,如我們常用的U盤;一種是自己從另外的電源獲得,此時主機至設備的電源線可以不連。如果設備的1.5k上拉電阻是加在D-上,那么此設備將被主機識別為低速設備。高速設備的上拉與全速設備一樣是加到D+,需要靠軟件協議進一步區分。

通過USB總線獲得供電的設備,分為兩種配置:

低功率設備(Low-power devices): 最大電流不超過100mA

高功率設備(High-power devices): 剛連接后設備后的枚舉階段不超過100mA,配置完成后最大不超過500mA。

USB所有的通訊都是由主機發起。當主機檢測到有設備連接時,首先會詢問設備,讓設備自報家門,看看設備都具備哪些能力,其中就包括最大電流,然后主機根據上報的描述進行相應的操作。這個過程叫自舉(Enumeration)。設備通過描述符(Descriptor)來聲明自己的能力,包括:

設備描述符(Device Descriptor)

配置描述符(Configuration Descriptor)

接口描述符(Interface Descriptor)

端點描述符(Endpoint Descriptor)

字符串描述符(String Descriptor)

端點(Endpiont)是USB通信的基本單元,每個USB設備都會包含若干個端點。主機下發的數據最終會根據設備地址和端點地址到達某一個端點,主機獲取數據也是給某個端點發出讀數據命令,此端點隨后把存儲在自己緩沖區的數據發給主機。

在端點之上是邏輯組織,多個端點可以歸到一個接口,多個接口可以歸為一個配置。而一個設備可以有多個配置。

3.USB物理層

de1893e6-017b-11ed-ba43-dac502259ad0.jpg

(USB Specification 2.0)

1 紅色 Vbus(5V)

2 白色 D-

3 綠色 D+

4 黑色 GND

有的USB接口會多出一根ID線,以支持OTG(On The Go)。支持OTG的線兩端是不一樣的,其中一端插到OTG設備時會把設備接口的識別引腳ID拉低,此設備識別到自己的ID拉低后會進入主機狀態(Host),連線另一端的設備ID沒有拉低,默認進入設備狀態(Device)。之后通過軟協議可以主從切換。但是集中這種應用不是太多,一臺設備要么作主機,要么作設備的情況比較多。

USB使用的是差分傳輸模式,有兩根數據線D+和D-。

Differential 1:D+ 》 VOH(min) (2.8V) 且D- 《 VOL(max)(0.3V)

Differential 0:D- 》 VOH and D+ 《 VOL

J狀態:對于低速USB是Differential 0,對于全速USB是 Differential 1

K狀態:對于低速USB是Differential 1,對于全速USB是 Differential 0

除此之外,通過把D+,D-當作單端信號拉低,拉高,可以表示一些特殊的狀態。

SE0狀態(Single Ended 0):D+ 低,D- 低

SE1狀態(Single Ended 1):D+ 高,D- 高

Reset信號:D+ and D- 《 VOL for 》= 10ms

主機在要和設備通信之前會發送Reset信號來把設備設置到默認的未配置狀態。即主機拉低兩根信號線(SE0狀態)并保持10ms。

看到這里也許有點暈,不過沒關系,你如果看USB協議會更暈。

我們千萬不要掉進這個坑里出不來,就像我們用串口也從來不會去觸發一個起始信號,或者拉出一個結束信號一樣,這些物理層信號狀態的處理完全由芯片集成的USB控制器來處理。而且提供USB軟件協議棧也是必須的,靠用戶自己完全把所有細節搞清楚是不現實的。然而就像開車一樣,你如果對汽車的原理有更深入的了解,一定更能充分的發揮出這輛車的性能。

繼續,除了以上狀態,還有:

Idle State, Resume State, Start of Packet, End of Packet, Disconnect, Connnect.

4.Packet

Packet是USB通訊最基本的單位。

de2a27fa-017b-11ed-ba43-dac502259ad0.jpg

SOP:Start Of Packet,標志由空閑狀態轉入數據包發送。

SYNC:同步段,供USB設備進行時鐘同步。

PID:Packet Identifier。種類比較多,下面再詳細說明。

Address:設備和端點地址。一個主機可以掛接多個設備,主機會給每個設備分配不同地址。

Frame Number:幀號,每發一幀加1,達到7FFFH時變為0。

Data:數據段。

CRC:校驗和。

EOP:End Of Packet。

通過不同的PID,數據包被分成4個大類,每個大類又包含一些小類:

令牌 (Token) OUT,IN,SETUP,SOF

數據 (Data) DATA0,DATA1

握手 (Handshake) ACK,NAK,STALL,NYET

特殊包 (Special) PRE,ERR

5.Transaction

一次Transaction總是從主機向設備發出一個令牌(Token)開始。再次強調,USB所有的通信過程都是由主機發起。三種令牌把Transaction分為三類:

OUT:主機發送數據給設備。

IN:主機從設備獲取數據。

SETUP:主機對設備進行設置。

USB協議里的OUT和IN,都要站在主機的角度來看。下面是比較典型的獲取,發送數據的例子:

de4053a4-017b-11ed-ba43-dac502259ad0.jpg

每一次Transaction,Token總是必需的,數據段和握手則視情況而定。比如在上一個例子中,當主機發出IN令牌獲取數據時,如果設備沒準備好數據,則可以返回NAK結束此Transaction。

6.Transfer

好了,有了以上這些,似乎萬事俱備了。但是如果進一步想一下,那么還是有些問題不好解決。什么呢?比方說DATA數據段的長度規定多長好呢?主機多長時間發起一次通信比較好呢?

一個USB主機上是允許掛載多個設備的,而這些設備千差萬別:比如像鼠標,按鍵后需要快速響應,把位置信息發送到主機,它的數據量很少,而像U盤則需要傳輸大量的數據。如果按鼠標的時候U盤正在傳輸數據怎么辦呢?

為了解決上述問題,USB首先規定了四種傳輸類型:

控制傳輸(Control Transfers): 主要用來在設備剛連接到主機時對設備進行設置。還有平時對設備狀態的管理。它需要雙向的數據傳輸。

批量傳輸(Bulk Data Transfers): 主要用來進行量大,但對傳輸時間要求不嚴格的場景。例如U盤。

中斷傳輸(Interrupt Data Transfers): 需要及時準確的傳輸信息的場景。中斷傳輸總是單向的。比如鼠標。

??

同步傳輸(Isochronous Data Transfers): 一般需要占用相對固定的帶寬,延時短而且比較確定。傳輸是單向的,數據出錯后不需要重傳。比如USB攝像頭。

然后,為了解決設備的及時響應問題,USB每隔1ms (高速USB是每隔125us)發出一個SOF令牌,緊接令牌進行同步類型的傳輸,之后依次是中斷類型,控制類型和批量數據傳輸類型。在每一個Frame內,Isochronous,Interrupt和Control都會保證一定的帶寬。而Bulk型的傳輸優先級最低,不一定每幀都得到帶寬進行數據傳輸。

de50c6bc-017b-11ed-ba43-dac502259ad0.jpg

一個Transfer 由一個或多個Transactions組成。比如一次控制傳輸可以由Setup,IN,OUT等Transactions組成。Packet和Transaction是不允許被中間打斷的,而Transfer的多個Transactions可以分多次傳輸。

7.小結

我們對USB的物理層和協議層做了簡要的介紹。在接下來的文章里我們將通過實際的例子來看一下USB是如何工作的,并對很多工程師經常忽略或者沒有意識到的一些問題進行探討。

原文標題:單片機外圍模塊-USB總線基本概念。

文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16332

    瀏覽量

    177813
  • usb
    usb
    +關注

    關注

    60

    文章

    7937

    瀏覽量

    264485
  • 數據
    +關注

    關注

    8

    文章

    7002

    瀏覽量

    88943
收藏 人收藏

    評論

    相關推薦

    Micro USB接口與USB-C的區別

    隨著科技的快速發展,USB接口已經成為我們日常生活中不可或缺的一部分。從數據傳輸到設備充電,USB接口的應用范圍越來越廣泛。Micro USBUSB-C是兩種常見的
    的頭像 發表于 11-27 09:55 ?490次閱讀

    PCM2707做了個usb的聲卡,有時工作不穩定,容易斷線怎么解決?

    PCM2707做了個usb的聲卡,有時工作不穩定,容易斷線怎么解決?
    發表于 11-08 08:32

    USB-C 與 USB-A 的區別

    隨著技術的發展,USB(通用串行總線)接口已經成為連接電子設備的標準。從最初的 USB 1.0 到現在的 USB 4.0,USB 接口經歷了多次迭代,以適應不斷增長的數據傳輸速度和電力
    的頭像 發表于 11-05 11:43 ?1296次閱讀

    USB控制器的作用、工作原理及技術規范

    通用串行總線(Universal Serial Bus,簡稱USB)控制器是一種用于計算機和外部設備之間通信的硬件設備。它廣泛應用于各種電子設備中,包括計算機、智能手機、平板電腦、打印機、掃描儀
    的頭像 發表于 08-29 15:36 ?1004次閱讀

    CYUSB3014是否會自動調整工作模式USB3.0還是USB2.0?

    CYUSB3014是否會自動調整工作模式USB3.0還是USB2.0?它的工作模式是否可以或怎么通過FLAG傳輸給FPGA?
    發表于 08-14 08:00

    Diodes公司推出USB 2.0信號調節器產品PI5USB212

    Diodes公司新推出的PI5USB212是一款高性能的USB 2.0信號調節器,即便在供電電壓低至2.3V的極端環境下也能穩定工作。這款產品特別適用于筆記本電腦、個人計算機、擴充塢、延長線、電視及顯示器等廣泛場景,為用戶帶來卓
    的頭像 發表于 05-09 14:27 ?616次閱讀

    Diodes公司宣布推出一款USB 2.0信號調節器產品PI5USB212

    Diodes 公司 (Diodes) (Nasdaq:DIOD) 宣布推出 USB 2.0 信號調節器產品 PI5USB212,可在供電電壓低至2.3V 的狀態下工作
    的頭像 發表于 05-06 15:55 ?522次閱讀

    USB口不同顏色所代表的意義是什么

    平時工作生活中我們會看到各種顏色的USB口,但是大多數人都不知道不同顏色的USB口代表什么含義?
    發表于 04-09 09:49 ?3868次閱讀
    <b class='flag-5'>USB</b>口不同顏色所代表的意義是什么

    STM32H743以太網與高速USB同時工作遇到的疑問求解

    STM32H743以太網與高速USB同時工作不可靠 各位大俠,我在一個項目中使用STM32H743的100M以太網和高速USB,高速USB是外置的PHY
    發表于 04-09 07:53

    cx3.0如何才可以在usb2.0模式下工作?

    目前:我的cx3 在usb3.0狀態下正常的輸出圖像,分辨率是2500*1024,工作都正常,現在我想兼容usb2.0,但是必須是同樣分辨率(2500*1024),可以降低fps,我應該怎么配置。謝謝
    發表于 02-29 07:33

    CY7C65215A-32LTXI USB配置工作模式失敗怎么解決?

    舊CY7C65215-32LTXI芯片可以配置,但換了新CY7C65215A-32LTXI,32PIN QFN封裝 ,USB配置工作模式失敗。
    發表于 02-21 06:50

    什么是USB HOST、USB Slave和USB OTG?它們之間有什么區別?

    什么是USB HOST、USB Slave和USB OTG?它們之間有什么區別? USB(通用串行總線)是一種用于連接設備的通信接口標準,它允許設備之間進行數據傳輸和通信。
    的頭像 發表于 02-02 15:32 ?1.3w次閱讀

    XMC4500 USB主機不工作的原因?

    速度。 當設備需要“低速”時,此USB主機驅動程序似乎反應不正確。 有沒有人成功使用此USB主機驅動程序? 英飛凌CAN有人向我保證此驅動程序工作正常? 我不知道它是否相關,但我已經看到 mode \" Mis \" 中斷不斷被
    發表于 01-26 06:50

    USB C和USB Type C的傳輸性能

    USB-C和USB Type-C是同一種標準,用于連接電子設備和傳輸數據、音頻和視頻信號。USB-C是USB Type-C的簡稱,兩者可以互換使用。
    的頭像 發表于 01-17 09:18 ?3208次閱讀

    usb虛擬串口和usb協議的區別

    USB虛擬串口和USB協議是兩個相關但不同的概念。在理解它們之前,我們首先需要了解USB的基本知識。 USB(通用串行總線)是一種用于連接計算機與外部設備的標準通信接口。它是由多個組件
    的頭像 發表于 12-28 14:55 ?1858次閱讀
    主站蜘蛛池模板: 亚洲色欲国产免费视频| 内射气质御姐视频在线播放| 国产成人啪精品视频免费网| 99热久这里都是精品小草| 4399亚洲AV无码V无码网站| 用震蛋调教女性下面视频| 亚洲永久精品ww47| 亚洲视频不卡| 亚洲天堂一区二区三区| 亚洲一级电影| 伊人久久综合热青草| 一本道高清不卡v免费费| 夜色帮首页| 约艺术院校96年清纯白嫩| 真实的强视频免费网站 | 国产真实强被迫伦姧女在线观看| 郭德纲于谦2012最新相声| 国产成久久免费精品AV片天堂| 国产AV国片精品无套内谢无码| 岛国大片在线播放高清| 国产成人在线观看免费网站| 国产精品第1页| 国产亚洲精品AV片在线观看播放 | 在线免费国产| 24小时日本在线观看片| av淘宝 在线观看| 超碰人人草在线视频| 国产白色视频在线观看w| 国产午夜在线观看视频| 九色PORNY真实丨首页| 老师小扫货水能么多叫出来| 女警被黑人20厘米强交| 日本特殊精油按摩| 亚洲 欧美 国产 在线 日韩| 亚洲宅男天堂a在线| 97免费在线视频| 大睾丸内射老师| 国产专区青青在线视频| 久久久精品久久久久特色影视| 男男免费看| 添加一点爱与你电视剧免费观看 |