USB如何通過兩根數據線完成通信?

2020-12-02 電巢

USB通信格式

USB接口最少有四根線連接,其中有兩根是數據線,而所有的USB數據傳輸都是通過這兩根線完成的,那麼它是怎麼做到的?

我們知道,串口為了實現通信,規定了起始位、停止位,有時候也可能增加奇偶校驗位,如果你知道了串口的波特率,那麼你就可以正確的接收到發送方發來的數據。那麼USB應該也有相應的通信格式要求才對,那它的格式是怎麼樣的?


串口中高電平代表1,低電平代表0,並且是全雙工通信,即可以同時發送和接收數據。而 USB 有所不同,它雖然也有兩根數據線,但它們卻是採用差分傳輸,即需要兩根數據線配合才能傳輸一個bit,因此是半雙工通信,同一時間只能發送或者接收。


首先我們需要了解一下差分 0 和差分 1 這兩種狀態:差分1:數據線 D+ 為高電平, D- 為低電平時為差分 1;差分0:數據線 D+ 為低電平, D- 為高電平時為差分 0。

但是要注意的是,這裡的差分0、差分1可不是代表數據0和1,而僅僅只是數據線表現的狀態,和真正的數據還有距離。USB 規定,如果電壓電平不變,代表邏輯1;如果電壓電平變化,則代表邏輯0,這就是 NRZI 。

看下圖進行理解:


USB不通信時,數據線處於閒置狀態(類似於串口的高電平閒置),一旦需要開始通信,首先切換到K狀態(類似串口的起始位),再進行實際的數據傳輸,在這裡傳輸的數據為 000011,實際的數據線狀態為差分101000,傳輸完畢後需要發送結束信號EOP:2位的 SE0,再加 1 位的J狀態(類似串口的停止位)。


這裡只是簡單的說明,實際上的數據傳輸比這個還要複雜一些,但大體是一致的。並且需要注意的是,上述描述的閒置狀態和J、K等狀態和設備類型有關,即全速設備和低速設備這些狀態的定義不同(這個可能和設備數據線的上拉電阻位置相關)。

AN57294採用 NRZI 編碼的好處是可以不需要時鐘線進行同步,但是為了實現準確的採樣,需要兩個條件:

1、 數據傳輸前需要發送同步域(SYNC),這個域固定為 0000 0001,通過NRZI編碼後就是一串方波信號,接收者可以通過方波信號確定採樣率(可以認為是串口的波特率)。

2、 因為數據中有大量的0,可以讓接收者通過信號的變化不斷調整採樣頻率,但是如果剛好數據中沒有0怎麼辦?


一旦有大量的1存在於數據線上,那麼數據線的電平將長時間不會發生變化,也就無法進行速率的同步,一旦接收者和發送者各自的時鐘頻率存在誤差,那麼很可能因為長時間沒有電平變化而導致採樣失敗(誤差長時間累積),所以 bit-stuffing 出現了,即所謂的強制插 0。USB規定,如果有7個連續的邏輯 1 ,需要在第 6 個 1 之後插入一個邏輯0來實現位填充,這樣D+和D-就會發生變化,從而讓接收者實現時鐘同步。在接收時,只要將6個邏輯1後的0刪除就可以恢復數據。



可以看到,6個連續的1之後強制插入了一個0進去,這樣即使接收方和發送方各自的時鐘存在誤差,也可以通過信號的變化實時同步,從而準確的進行採樣。以上內容就是 USB 為什麼只需要兩根線就能進行快速進行數據傳輸的關鍵。


USB 數據包

下面再來聊聊數據包:

前面這張圖介紹了如何通過 USB 數據線傳輸000011 數據,事實上在 USB 中,所有的數據都是以包(Packet)的形式進行傳輸的,而數據包是有一定的格式,也就是說,為了傳輸00011,需要按照包的格式才能正確傳輸。數據包有如下組成部分:



首先是 SOP(即從閒置狀態到K狀態),然後是 SYNC,即前面提到的同步域,用於接收方的時鐘同步,其次才是我們需要傳輸的數據內容,最後是 EOP(2位 SE0,1位J狀態)。如此,你的數據(PacketContent)才能被接收方正確接收。


數據包分為四大類:

令牌 (Token) Packet

幀首 (Start of Frame) Packet

數據 (Data) Packet

握手 (Handshake) Packet

每一類又可能分為多種具體的數據包,比如令牌包分為OUT、IN、SETUP等數據包,每一類中的 Packet Content 內容可能是不一樣的,比如:

令牌 (Token) Packet

(灰色部分代表不存在)

幀首 (Start of Frame) Packet

數據(Data)Packet

握手(Handshake) Packet

(灰色部分代表不存在)

相關焦點

  • USB數據線接口怎麼接 USB數據線接口操作方法介紹【詳解】
    這些工具的運作也需要另一些工具的支持,比如說到我們的智慧型手機,你一會想到數據線,沒錯,數據線對於這些行動裝置來說是很重要的,它是一種輸入輸出的功能的總線。下面有詳細的介紹。  接口布置  USB是一種常用的pc接口,他只有4根線,兩根電源兩根信號,故信號是串行傳輸的,usb接口也稱為串行口,usb2.0的速度可以達到480Mbps。可以滿足各種工業和民用需要.USB接口的輸出電壓和電流是:+5V500mA實際上有誤差,最大不能超過0.2V也就是4.8-5.2V。
  • OTG數據線與Micro USB數據線區別,自製OTG數據線
    前面發文介紹過OTG數據線的各種利用方法,不通過電腦就直接在設備之間傳送數據。在手機上打開U盤上文件,或者把手機上數據傳到U盤。數位相機拍攝照片通過OTG連接印表機,直接列印相機裡的照片很方便。科普短文,手機OTG功能簡介,OTG常用方法OTG接口與手機數據接口外觀來看沒有區別,用OTG數據線,就能讓手機讀取U盤中資料,也可以把手機中數據傳輸到U盤。通過OTG功能可以很方便的直接列印數位相機中照片。我們來看一下OTG數據線的接線圖。
  • 如何自測USB轉串口線是否通信正常
    USB轉串口在通信中最常見,用戶群體也很廣泛,它是一種操作簡單、使用方便的通信產品。但是在使用中也難免會遇到一些問題,今天為大家介紹如何檢測usb轉串口線是否通信正常。然後右擊我的電腦選擇管理,左擊設備管理器,進入設備管理器界面,單擊埠選項即可顯示通信口,一般通信口為COM1。其次:設置好通信埠後,在輸入窗口輸入幾個字符後就單擊手動發送按鈕。如果接受顯示區的內容和發送區的內容一致,表明usb轉串口通信正常,相反則不正常。
  • 現階段USB Type C數據線市場行情分析
    我們在選擇USB Type C數據線的時候又應該做怎樣的選擇呢?據綠聯分析,目前市場真正帶有USB TYPE C接口設備少,而真正符合USB 3.1規範的 TYPE C接口標準設備就更少了。針對現存大量安卓設備相關的產品,如USB充電器等都是Type A接口,目前市場上更多的是針對USB Type C與 Type A的轉換數據線。
  • 如何通過USB通信來升級傳統設計
    如何通過USB通信來升級傳統設計 電子工程網 發表於 2019-10-21 16:08:01 設計具有通用串行總線(USB)通信功能的應用可使系統能夠通過各種USB主機設備進行通信,並通過USB連接提供方便的電源選擇方案
  • 【乾貨】常見幾種USB(母座)引腳定義你,你值得擁有!
    說到usb母座,肯定很多人問usb母座是什麼呢?首先usb母座是一種安全節電以及是帶usb接口的通用插座,其實在現大部分人都叫做usb插座或者是usb母座。目前在USB2.0母座接口分為有好幾種類型A型、B型、Mini型等等。
  • USB數據線和充電線有什麼不同!
    ,可是那工作人員說只能夠配到USB直充充電器(也就是改裝過來)不能夠配USB數據線,工作人員說充電器線和數據線裡面不是一樣的他不敢接 ,  接錯了搞不好會燒壞手機,他就奇怪 USB數據線和充電器線不是一樣接口麼 ?
  • 特立獨行7年了,iphone終於要換usb-c數據線了?
    文/黑貓評測那麼多年來,蘋果都是科技領域最特立獨行的那一個——在大家都用塑料屏幕的時候,蘋果開創了用康寧大猩猩強化玻璃作為屏幕蓋板的先例;在大家都用usb接口的時候,蘋果用上了自研的lighting 30針數據線;在大家都用數字來加密手機的時候,蘋果首次採用了指紋解鎖,引領了通過生物識別來加密手機的潮流
  • USB接口定義圖
    USB是一種常用的pc接口,他只有4根線,兩根電源兩根信號,如下圖.故信號是串行傳輸的,usb接口也稱為串行口,usb2.0的速度可以達到480Mbps。
  • 手機通過usb連接電腦上網
    手機通過usb連接電腦上網  當遇到身邊沒有WIFI但又捨得不得使用手機流量,卻又需要上網的時候,可以使用手機通過usb連接電腦上網,這樣就一舉兩得了,下面就來介紹一下手機通過usb連接電腦上網的方法。
  • 手機充電線和數據線竟然不一樣,你確定買對了嗎?
    其實,很大可能性,是因為你買到了一條「假的」數據線。也就是說,你買的是充電線,並不是數據線,所以只能充電,無法傳輸數據。那充電線和數據線到底有什麼區別呢?今晚的節目我們就來和大家說說吧~首先是功能區別:這個非常好理解了。
  • USB接口擴展與差分信號仿真
    特定的USB主機程序段用於與特定的USB設備功能單元的通信。  (2)USB設備層:主要用於管理USB設備、分配USB地址、讀取設備描述符。在這一層中,可以使USB主機獲得該USB設備的能力。這部分功能一方面需要USB主機自動完成,另一方面也需要用戶編寫相應的固件程序進行支持。  (3)USB總線接口層:主要用於實現USB主機和USB設備之間的數據傳輸。
  • USB供電規範完成:最高可達100W
    USB 3.0、USB 2.0推廣小組今天聯合宣布,新的USB供電規範「USB Power Delivery」已經制定完成,大大提高了USB接口和數據線的供電能力,最高可達驚人的100W,USB外置設備需要輔助供電的煩惱有望得到徹底解決。
  • 經驗分享,親手把Micro USB數據線改成OTG數據線,幾點注意事項
    手機上普通的Micro USB數據線只能用來充電,或者連接電腦傳輸數據。通過電腦訪問手機中照片、視頻、音樂等各種數據或傳輸資料到手機。而通過OTG數據線則不需要電腦,手機用OTG數據線直接連接U盤、滑鼠、鍵盤等各種USB設備,手機直接可以與U盤互傳資料。如下圖所示。上圖就是改造好的OTG數據線連接U盤,手機中顯示的就是U盤中資料。
  • OTG連接線與普通USB連接線的區別
    USB數據線用來連接手機和電腦,可通過電腦訪問手機裡面的照片、音樂,把手機當做U盤使用。OTG數據線則無需PC,手機可直接通過OTG數據線與U盤、滑鼠、鍵盤等USB設備連接。  手機通過綠聯OTG連接線給USB風扇供電  OTG連接線與普通USB連接線的區別,USB數據線連接電腦的時候,由電腦供電,而OTG數據線連接U盤等設備的時候,手機必須給U盤等外設供電,那麼手機是如何識別
  • 自製簡易usb兩用插座
    手機充電器,充電數據線。把充電數據線小的金屬扁口一端剪掉,可以看到裡面有四根電線,其中紅黑線是充電線,綠白色電線是數據交換線。剪掉綠白色電線,保留紅色(正極)黑色(負極)電線。這是usb插座和針式插座。
  • 電源線和數據線傻傻分不清,看細節,讓你不再買錯
    手機想連電腦導照片或視頻,發現自己平時用的USB線連接手機和電腦後,總是沒反應,讓你苦惱不已,現在我就來告訴大家如何區分電源線和數據線。鑑別辦法總共有兩種,外觀、價格和技術檢測。一、從外觀上判斷:現在市場上流行的手機插口包括:type-c、micro usb及蘋果手機專用,外觀如下:Type-C、蘋果專用、micro usb數據線首先從線束的粗細上比較,一般USB數據線要比電源線略粗,這是由於USB數據線比電源線多兩根數據傳輸線芯
  • 如何挑選到一根靠譜USB數據線,這些貓膩你需要知道
    內芯越粗,可通過的電流也就越多,充電就能越快速。優先選純銅芯的線芯,電阻會小充電效率也會更高,一般標了閃電快充都是採用了純銅芯。看數據線接口的適配不同品牌的手機也有差異,一般分Micro usb 接口、lightning 接口、Type-C 接口。
  • Linux USB總線驅動框架分析
    且總線驅動程序會為該設備分配一個地址,如上地址為2,當後期訪問某個USB設備時,均會通過這個地址編號,當新接入的USB設備被第一次訪問時,以地址0來訪問。當USB總線驅動程序識別出設備後,會為其找到該USB設備驅動程序,如鍵盤,滑鼠,U盤。USB通信過程均為主從結構,USB主機發起通信請求,設備進行數據回復,USB設備不具備主動向主機通信的能力。
  • 紅米手機如何打開usb調試
    紅米手機如何打開usb調試?紅米手機連不上電腦最主要的原因就是未打開usb調試,那這個usb調試到底該如何打開呢?紅米手機如何打開usb調試?接下來小昭就以紅米note為例,操作一下如何打開usb調試,希望對大家有所幫助。手機Android版本為:4.4.2打開手機,找到設置。