1. USB協(xié)議
1.1 USB主機系統
在USB主機系統中,通過(guò)根集線(xiàn)器與外部USB從機設備相連的處理芯片,稱(chēng)為USB主機控制器。USB主機控制器包含硬件、軟件和固件一部分。
本文引用地址:http://dyxdggzs.com/article/201612/330442.htm1.2 USB設備系統
USB設備按功能分為兩部分:集線(xiàn)器(Hub)和功能部件。從下圖可知,主機通過(guò)根集線(xiàn)器連接到各種外圍設備(集線(xiàn)器和功能部件)。

1.3 主機和設備之間通信模型

主機與設備之間的通信模型
上圖展示了USB主機和USB設備之間的數據傳輸過(guò)程。在設備端,USB設備將非USB格式的數據進(jìn)行打包處理,轉換成USB格式的數據包,然后傳遞到鏈路層,經(jīng)過(guò)硬件處理、傳遞到物理層,由物理層通過(guò)PHY以數據流的形式傳輸到主機。
USB主機在USB設備和USB主機之間發(fā)起的傳輸過(guò)程,穩為事務(wù)。每次事務(wù)以2到3個(gè)數據包的形式進(jìn)行USB總線(xiàn)傳輸。每個(gè)數據包包含2到3個(gè)步驟:
1) USB主機控制器向USB設備發(fā)出命令
2) USB控制器和USB設備之間傳遞讀寫(xiě)請求,其方向取決于第一部分的命令是讀還是寫(xiě)
3) 握手信號。
USB主機控制器向USB設備發(fā)送事務(wù)類(lèi)型請求,通過(guò)分組標識符來(lái)進(jìn)行識別。
1.4 USB分組標識
主機和設備之間進(jìn)行操作,通過(guò)分組標識(PID)來(lái)進(jìn)行傳輸。數據包傳輸格式一般由:PID、數據/控制信息、CRC校驗碼組成。
常見(jiàn)的PID主要包括令牌、數據、握手等類(lèi)型組成。PID碼以特定的方式組成,如下表所示:

PID分組碼是數據傳輸流程中的重要元素。無(wú)論硬件還是軟件,都要對PID分組碼進(jìn)行分析,從而做出正確響應。USB主機和設備嚴格按照PID分組碼信息進(jìn)行信息交互。
1.5 數據包傳輸模式
當USB設備連接到集線(xiàn)器,集線(xiàn)器狀態(tài)將發(fā)生相應的變化,并將狀態(tài)變化信息傳遞給USB主機。USB主機通過(guò)根集線(xiàn)器向USB設備發(fā)送命令,獲取USB設備的各種信息,包含USB設備傳輸類(lèi)型、ID號、Product、USB速度等信息。
USB主機和USB設備之間的數據傳輸共有四種類(lèi)型:控制傳輸、批量傳輸、中斷傳輸和同頻傳輸。與之對應,USB主機和USB設備之間有四種事務(wù):控制事務(wù)、批量事務(wù)、中斷事務(wù)和同步事務(wù)。
1.5.1 批量(Bulk)傳輸

作用:主要用于非實(shí)時(shí)性傳輸,數據包較大而延時(shí)要求較低。
特點(diǎn):數據傳輸準備即可,采用批量傳輸模式的USB從機設備,如U盤(pán)
數據傳輸分三個(gè)階段:
a)令牌階段:主機發(fā)送請求,USB設備依據請求PID來(lái)判斷IN或OUT傳輸
b)數據傳輸階段:依據令牌階段的IN或OUT傳輸,來(lái)決定數據傳輸為DATA0或DATA1來(lái)進(jìn)行數據傳輸
c)握手階段:接收信息的一方發(fā)送ACK信號以表示接收成功;若為NAK,表示發(fā)送失??;STALL表示不可預知的錯誤
1.5.2 控制(Control)傳輸

作用:USB傳輸過(guò)程必須支持的傳輸模式。USB主機為了獲取設備描述符、ID、Product等信息,向USB設備發(fā)送相應的PID命令。
特點(diǎn):唯一可以進(jìn)行IN/OUT傳輸的傳輸模式。
數據寬度:控制傳輸方式可以以8、16、32或64字節的數據進(jìn)行傳輸,這取決于設備的傳輸速度。
USB主機和設備之間必須支持控制傳輸,通過(guò)端點(diǎn)0進(jìn)行數據傳輸??刂苽鬏敺譃榱钆?、數據傳輸和握手階段。
1.5.3 中斷傳輸事務(wù)

作用:按照一定時(shí)刻輪詢(xún)設備是否有中斷傳輸請求
特點(diǎn):查詢(xún)頻率取決于端點(diǎn)的模式結構,從1到255ms不等
中斷傳輸主要用于實(shí)時(shí)性要求非常高的從機設備,如鍵盤(pán)操縱桿和Mouse等
傳輸過(guò)程也分為令牌階段、數據傳輸和握手階段
1.6 USB描述符
USB協(xié)議中共定義了以下四種描述符:
1) 設備描述符
2) 配置描述符
3) 接口描述符
4) 端點(diǎn)描述符
其關(guān)系如下圖所示:

1.6.1 設備描述符
每個(gè)USB設備都有一個(gè)唯一的設備描述符,如下表所示:

1.6.2 配置描述符
每個(gè)USB設備都有默認的配置描述符,支持至少一個(gè)接口,每個(gè)配置描述符如下表:

1.6.3 接口描述符
設備應至少支持一個(gè)接口,如:塊傳輸數據接口,部分設備可能支持其它的接口。復合設備可以支持額外接口,以支持音頻和視頻功能。標準中并沒(méi)有定義此類(lèi)接口。接口可能有多個(gè)可選設置,主機將會(huì )檢查每個(gè)可選的設置。
1.6.4 端點(diǎn)描述符
每個(gè)設備至少支持控制端點(diǎn)0。USB設備應該支持三類(lèi)端點(diǎn):控制端點(diǎn)、輸入端點(diǎn)和輸出端點(diǎn)。


2. OTG協(xié)議
OTG設備采用Mini-AB插座,相對于傳統的USB數據線(xiàn),Mini-AB接口多了一根數據線(xiàn)ID,ID線(xiàn)是否接入將Mini-AB接口分為Mini-A和Mini-B接口兩種類(lèi)型。在OTG設備之間數據連接的過(guò)程中,通過(guò)OTG數據線(xiàn)Mini-A和Mini-B接口來(lái)確定OTG設備的主從:接入Mini-A接口的設備默認為A設備(主機設備);接入Mini-B接口的設備,默認為B設備(從設備)。
A設備和B設備無(wú)需交換電纜接口,即可通過(guò)主機交換協(xié)議(HNP)實(shí)現A、B設備之間的角色互換。同時(shí),為了節省電源,OTG允許總線(xiàn)空閑時(shí)A設備判斷電源。此時(shí),若B設備希望使用總線(xiàn),可以通過(guò)會(huì )話(huà)請求協(xié)議(SRP)請求A設備提供電源。
2.1 HNP(主機交換)協(xié)議
當Mini-A接口接入A設備并確定A設備為主機時(shí);若B設備希望成為主機,則A設備向B設備發(fā)送SetFeature命令,允許B設備進(jìn)行主機交換。B設備檢測到總線(xiàn)掛起5ms后,即掛起D+并啟動(dòng)HNP,使總線(xiàn)處于SE0狀態(tài)。此時(shí)A設備檢測到總線(xiàn)處于SE0狀態(tài),即認為B設備發(fā)起主機交換,A設備進(jìn)行響應。待B設備發(fā)現D+線(xiàn)為高電平而D-線(xiàn)為低電平(J狀態(tài)),表示A設備識別了B設備的HNP請求。B設備開(kāi)始總線(xiàn)復位并具有總線(xiàn)控制權,主機交換協(xié)議完成。
2.2 SRP(會(huì )話(huà)請求)協(xié)議
對于主機,要求能響應會(huì )話(huà)請求;對于設備,僅要求能夠發(fā)起SRP協(xié)議。OTG設備,不僅要求發(fā)起SRP,而且還能響應SRP請求。
SRP分為數據線(xiàn)脈沖調制和電壓脈沖調兩種方式,B設備發(fā)起SRP必須滿(mǎn)足以下兩個(gè)條件:
1) B設備檢測到A設備低于其有效的電壓閾值,同時(shí)B設備低于有效的電壓閾值。
2) B設備必須檢測到D+和D-數據線(xiàn)至少在2ms的時(shí)間內低于有效閾值,即處于SE0狀態(tài)。
數據線(xiàn)脈沖調制會(huì )話(huà)請求:B設備必須等到滿(mǎn)足以上兩個(gè)條件后,將數據線(xiàn)接入上拉電阻一定的時(shí)間,以備A設備過(guò)濾數據線(xiàn)上的瞬間電壓。與此同時(shí),B設備上拉D+以便于在全速模式下進(jìn)行初始化操作。A設備在檢測到D+變?yōu)楦唠娖交駾-變?yōu)榈碗娖綍r(shí)產(chǎn)生SRP指示信號。
Vbus脈沖調制會(huì )話(huà)請求:B設備同樣需等待滿(mǎn)足上述兩個(gè)初始化條件,然后B設備通過(guò)對電容充電以提高總線(xiàn)電壓,待達到總線(xiàn)上的電壓閾值,喚醒A設備。在充電過(guò)程中,一定要保證充電的電壓峰值在一定的范圍以避免燒壞A設備。
3. USB驅動(dòng)架構
USB驅動(dòng)架構如下圖所示:

3.1 USB主機端驅動(dòng)

USB核心(USBD)是整個(gè)USB驅動(dòng)的核心部分,從上圖可知,一方面USBD對接收到USB主機控制器的數據進(jìn)行處理,并傳遞給上層的設備端驅動(dòng)軟件;同時(shí)也接收來(lái)自上層的非USB格式數據流,進(jìn)行相應的數據處理后傳遞給USB主機控制器驅動(dòng)。
評論