一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

USB是如何工作的

FPGA之家 ? 來源:TopSemic嵌入式 ? 作者:TopSemic嵌入式 ? 2022-07-12 09:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.USB概述

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

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

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

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

USB協(xié)議是開放的,可以從官方網(wǎng)站usb.org下載。

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

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

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

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

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

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

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

設(shè)備描述符(Device Descriptor)

配置描述符(Configuration Descriptor)

接口描述符(Interface Descriptor)

端點描述符(Endpoint Descriptor)

字符串描述符(String Descriptor)

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

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

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設(shè)備時會把設(shè)備接口的識別引腳ID拉低,此設(shè)備識別到自己的ID拉低后會進入主機狀態(tài)(Host),連線另一端的設(shè)備ID沒有拉低,默認進入設(shè)備狀態(tài)(Device)。之后通過軟協(xié)議可以主從切換。但是集中這種應用不是太多,一臺設(shè)備要么作主機,要么作設(shè)備的情況比較多。

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

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

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

J狀態(tài):對于低速USB是Differential 0,對于全速USB是 Differential 1

K狀態(tài):對于低速USB是Differential 1,對于全速USB是 Differential 0

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

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

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

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

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

看到這里也許有點暈,不過沒關(guān)系,你如果看USB協(xié)議會更暈。

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

繼續(xù),除了以上狀態(tài),還有:

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,標志由空閑狀態(tài)轉(zhuǎn)入數(shù)據(jù)包發(fā)送。

SYNC:同步段,供USB設(shè)備進行時鐘同步。

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

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

Frame Number:幀號,每發(fā)一幀加1,達到7FFFH時變?yōu)?。

Data:數(shù)據(jù)段。

CRC:校驗和。

EOP:End Of Packet。

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

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

數(shù)據(jù) (Data) DATA0,DATA1

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

特殊包 (Special) PRE,ERR

5.Transaction

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

OUT:主機發(fā)送數(shù)據(jù)給設(shè)備。

IN:主機從設(shè)備獲取數(shù)據(jù)。

SETUP:主機對設(shè)備進行設(shè)置。

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

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

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

6.Transfer

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

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

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

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

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

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

??

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

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

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

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

7.小結(jié)

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

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

文章出處:【微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    114

    文章

    17105

    瀏覽量

    184270
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8184

    瀏覽量

    272879
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7256

    瀏覽量

    91858
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    當FPGA上電工作,CYUSB3014工作異常,為什么?

    路電源。當FPGA不工作,CYUSB3014會工作正常;當FPGA上電工作,CYUSB3014工作異常(驅(qū)動會找不到)。 測試如下: 把CYUSB3014斷開電源,把3.3V_
    發(fā)表于 05-20 06:48

    DLPCRC900EVM評估板USB接口J7工作異常的原因?

    ,但是評估板本身應該是可以正常工作的(電源燈常亮、狀態(tài)燈一直閃爍)。分析USB部分電路圖后,結(jié)論如下: 0、評估板之前是可以正常工作的,不清楚是否是反復插拔USB線纜的原因,造成了該部
    發(fā)表于 02-17 06:35

    什么是 USB 3.2?

    什么是USB3.2?USB3.2是一種USB(通用串行總線)標準,它建立在之前的USB3.0和USB3.1標準之上。它的開發(fā)是為了提供更快的
    的頭像 發(fā)表于 01-24 11:39 ?2233次閱讀
    什么是 <b class='flag-5'>USB</b> 3.2?

    Micro USB接口與其他USB接口的比較

    Micro USB接口概述 Micro USB接口是一種USB 2.0標準的接口,它在2007年推出,旨在取代Mini USB接口。Micro US
    的頭像 發(fā)表于 11-27 10:17 ?6370次閱讀

    Micro USB接口與USB-C的區(qū)別

    隨著科技的快速發(fā)展,USB接口已經(jīng)成為我們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。從?shù)據(jù)傳輸?shù)皆O(shè)備充電,USB接口的應用范圍越來越廣泛。Micro USBUSB-C是兩種常見的
    的頭像 發(fā)表于 11-27 09:55 ?5351次閱讀

    USB-C有哪些變化

    快速充電標準,還是解讀USB 數(shù)據(jù)速度在特定電纜端口上的工作方式,我都不知道該往哪個方向走。USB-C 標準的定義原則使問題變得更加復雜,它導致消費者認為一切都正常,而實際情況卻大相徑庭。
    的頭像 發(fā)表于 11-13 11:26 ?1001次閱讀
    <b class='flag-5'>USB</b>-C有哪些變化

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

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

    USB-C 與 USB-A 的區(qū)別

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

    如何設(shè)置usb的傳輸方式

    USB(通用串行總線)是一種廣泛使用的接口技術(shù),用于連接計算機與外部設(shè)備。USB接口支持多種傳輸方式,包括USB 1.x、USB 2.0、USB
    的頭像 發(fā)表于 10-12 14:16 ?1754次閱讀

    USB接口電路設(shè)計的注意事項

    ,隨著USB技術(shù)的不斷發(fā)展和應用范圍的擴大,越來越多的硬件新手在USB應用中遇到了各種困擾,尤其是在PCB方面。 USB協(xié)議定義了兩根差分信號線(D+和D-)用于傳輸數(shù)字信號。為了確保USB
    的頭像 發(fā)表于 09-26 15:57 ?1155次閱讀

    usb主機模式怎么打開

    USB主機模式(USB Host Mode)是指設(shè)備(如智能手機、平板電腦或某些類型的計算機)能夠連接到USB設(shè)備(如鍵盤、鼠標、存儲設(shè)備等),并作為USB主機來控制這些設(shè)備。這種模式
    的頭像 發(fā)表于 09-25 09:08 ?4036次閱讀

    USB 3.1和USB 3.2有哪些區(qū)別

    USB由于標準眾多,即便是之前已經(jīng)確定的,隨著新一代的推出,標準又出現(xiàn)了新的變化。本期我們將單獨拿出USB 3.1和USB 3.2,它們外觀基本相似,但是在參數(shù)對比上有些區(qū)別,具體不同一起往下看。
    的頭像 發(fā)表于 09-09 14:59 ?4138次閱讀
    <b class='flag-5'>USB</b> 3.1和<b class='flag-5'>USB</b> 3.2有哪些區(qū)別

    USB控制器的作用、工作原理及技術(shù)規(guī)范

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

    CYUSB3014是否會自動調(diào)整工作模式USB3.0還是USB2.0?

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

    CYUSB3014 USB 3.0可作為2.0工作,但不能作為3.0工作,為什么?

    我們在定制電路板中使用的是 CYUSB3014,EZ-USB Suite 工具版本為 1.3.5。 在嘗試加載 USB BulkloopAuto 或任何其他固件示例圖像時,我們會收到\"
    發(fā)表于 07-22 06:02