通訊過程
usb(universal serial bus),統稱通用序列匯流排,主要是用於電腦裝置和外設連線和通訊。
從硬體的層面看,包含usb介面(包含公頭和母頭)。從軟體層面,通常指的是usb通訊協議,包含了握手、通訊等一系列行為的通訊定義。
usb通訊協議由usb-if(usb implementers forum),統稱usb標準化組織美國,進行維護,usb-if是一家非營利性公司,有個開發通用序列匯流排規範的公司集團成立。目標是為通用序列技術的發展和採用提供組合和論壇。
該組織的主要負責:
目前主要的董事會成員的組成為:
截止到目前(2021-01-28)發布的最新一版本的協議規範為usb4tm^
tm(2019/09/3發布)。目前此版本正在進行測試。
目前已知的協議版本發布日期:
值得一提的是在2023年07月24日,usb2.0標準重新進行了修訂,對於嵌入式usb(eusb)通訊協議的物理層進行了補充。感興趣的同學可以去研究一下。
從硬體的角度出發,看usb通訊,其本質和其它裝置間通訊的模式基本類似,usb2.0中採用了4線協議。由於本篇主要講解usb2.0協議,因此面向的也主要是這種裝置(方便起見,以下usb2.0協議統稱usb協議)。裝置接線如下:
從軟體的角度出發,首先是要了解硬體層次的通訊協議,也就是資料傳輸層的事務,模擬osi分層理念,我們可以將協議抽象為三層。
主要從物理方面定義了usb匯流排的結構架構模式,主要考慮的是裝置的電氣特性,資料傳輸過程的編譯碼演算法。
協議層主要用於解析封裝usb的資料幀資訊,實現握手,定址等操作。
主要包含了架設在usb協議上的業務**。
要了解乙個事務的最好方法,就是模擬設計該項事務,站在設計者的角度,更容易掌握其設計初衷和關鍵資訊。
我們可以站在乙個更好一點的角度上去了解,也就是我們放棄物理層的設計,只考慮,在四線協議下的usb通訊過程和編譯碼過程(實際裝置的編碼也主要是該流程)。
在usb中,主要起到通訊左右的為d
+d^+
d+和d
−d^-
d−兩根線。如圖:
採用差分訊號的模式進行資料傳輸,所謂差分訊號簡單來講就是通過比較d
+d^+
d+和d
−d^-
d−兩個埠的電壓差值判斷傳送端的邏輯狀態。
usb協議定義的查分訊號定義為:
理論講的有點多了,大家可能看到這兒會有點困了,我們不如直接上個小的實戰演示,看看差分傳輸究竟是怎樣的存在。
材料列表:
這裡有一點要注意,首先是線的順序不要搞錯,不然正負接反了就就。。就糟糕了。
然後還有一點就是,usb裡面的小知識點了。usb協議定義了三種速度模式:高速模式、全速模式和低速模式。
在開始設計之前,我們看看我們整個usb通訊匯流排的架構下,包含了哪些部分。
我們實際需要設計的只有兩個部分,一部分是執行在usb-host端側的客戶端程式,另乙個是物理裝置及其執行程式。所謂usb-host,其實就是usb主機這種概念。不同的作業系統,在適配usb協議時,會在底層實現基礎的usb系統架構(usb系統軟體和usb匯流排控制器),然後我們只需要在作業系統暴露的api介面層上,封裝我們的客戶端程式即可。作為底層裝置,可能稍微複雜一點,硬體設計其實並不複雜,畢竟usb還是以易用性作為其核心目標之一的。總歸是底層的一些差分編譯碼,物理層協議層實現等相對費點腦筋。
(未完待續)
USB匯流排協議概述
要完成乙個usb裝置的開發,僅了解usb協議是不夠的,還需要知道usb裝置類協議,usb協議與usb裝置類協議是相互補充的。為了簡化usb匯流排的開發流程,usb if將常用的具有相同或相似功能的裝置歸為一類,並制定了相關的裝置類規範,使得只要依照統一規範標準,不同的廠商開發的usb裝置可以使用同樣...
USB匯流排簡介(一)
usb universal serial bus 是一種 通用序列外部匯流排 首先,usb是一種 匯流排 它與計算機內部的匯流排 如pci匯流排 不同,cpu不能通過訪問記憶體指令或者i o指令直接訪問連線在usb上的裝置,而要通過乙個 usb控制器 間接地與連線在usb上的裝置打交道,usb匯流排...
硬體匯流排學習之路 USB匯流排體系協議簡介
其實也想過很久,要不要去,猶豫了很久,本來想,其實不用這樣對技術痴迷,感覺,現在已經可以了,無所謂的非要這樣,去委屈自己,但是最後還是決定過去了,因為,真的就幾個月了,自己還沒有完全的想好,還有乙個原因,是自己想看看android是個什麼樣的,趁這個機會好好的了解一下整個系統,畢竟,目前,它是最最流...