二、USB的低速模式和全速模式,采用的是電壓傳輸模式。高速模式,則采用的是電流傳輸模式。
a、USB傳輸速率:USB1.1是12M/s;USB2.0是480M/s (其他通信接口:PS2 10M/s;并口 8M/s; R-232 20KB/S)高速 480M/s,全速12M/s,低速1.5M/s
b、平時無數(shù)據(jù)傳輸時,總線處于空閑狀態(tài)。當需要傳輸一次事務時,主機發(fā)送一個令牌包,它可以是OUT令牌包、IN令牌包或者是PING令牌包,其中PING令牌包是USB2.0高速模式輸出特有的,全速模式和低速模式?jīng)]有這個令牌包。
c、USB拓撲結(jié)構(gòu),一個HOST做多可接6層,每層最多允許接5個Device,總共同時可接127個Device(實際不會做到那么多)。
d、 USB信號編碼方式:反向不歸零編碼(0變1不變)
三、USB描述符間的關(guān)系
a、設備描述符--決定了有多少種配置
b、配置描述符--定義了有多少個接口
c、接口描述符--定義了該接口有多少個端點
d、(類特殊描述符,如果有,在接口描述符之后)
e、端點描述符--定義端點的大小、類型
(主機首先會獲取設備描述符,再獲取配置描述符,再獲取接口描述符,根據(jù)配置描述符中的配置集合總長度,一次將配置描述符、接口描述符、類特殊描述符(如果有)、端點描述符一次讀回)
f、字符串描述符--是單獨獲取,主機發(fā)送字符串描述符請求以及字符串索引號、語言ID來獲取對應的字符串描述符。
四、USB設備的枚舉過程
a、檢測到USB插入,就對設備進行復位,復位后USB設備再總線上的地址為0。USB主機往地址0的設備的端點0發(fā)送設備描述符的標準請求(控制傳輸?shù)慕⑦^程)。然后,USB設備收到請求,按照主機要求返回設備描述符給到主機。主機成功獲取并確認正確后就返回一個0長度的確認數(shù)據(jù)包給設備,從而進入到下一階段的設置地址階段。
b、主機對設備再復位一次。這時進入設置地址階段。USB主機往地址0發(fā)出一個設置地址的請求(控制傳輸?shù)慕⑦^程),新設備地址包含在建立過程的數(shù)據(jù)包中。主機分配一個地址給剛插入的設備。USB設備收到這個建立過程后,就進入到狀態(tài)過程,因為這個控制傳輸沒有數(shù)據(jù)過程。設備等待主機請求狀態(tài)返回一個輸入令牌包,收到輸入令牌包后,設備就返回0長度的狀態(tài)數(shù)據(jù)包。主機收到并確認,返回ACK應答包給設備,設備收到ACK后就開始啟用新地址。
c、主機再次獲取設備描述符(使用新設備地址,而不是地址0)。需要獲取全部18字節(jié)的設備描述符,如果端點0最大包小于18字節(jié),主機則對此請求數(shù)據(jù)輸入,發(fā)送多個IN令牌包。
d、主機獲取配置描述符,再根據(jù)配置描述符的描述獲取配置集合總長度(獲取配置集合)。配置集合包括配置描述符、接口描述符、類特殊描述符(如果有)、端點描述符等。后三個不能單獨獲取,要以集合方式返回。
e、此外,字符串描述符,報告描述符等,有的話都是要單獨獲取的。
五、USB包結(jié)構(gòu)
包的6部分組成
a、同步字段(SYNC)--同步域告訴USB的串行接口引擎數(shù)據(jù)要開始傳輸了。同步主機端和設備端的數(shù)據(jù)時鐘。
b、包標識符(PID)--標識包的類型,總共8位,USB協(xié)議只用到4位(PD0~3),另外4位是PD0~3的取反,用來校驗PID。
c、USB協(xié)議規(guī)定四類包
1、令牌包(token packet.PID1~0為01)
2、數(shù)據(jù)包(data packet.PID1~0為11)
3、握手包(handshake packet.PID1~0為10)
4、特殊包(special packet.PID1~0為00)
d、地址字段(ADDR)
e、數(shù)據(jù)字段(DATA,包括幀號)
f、檢驗字段(CRC)
g、包結(jié)束(EOP)--全速、低速設備的EOP是一個大約為2個數(shù)據(jù)位寬度的單端0(SE0)信號。SE0就是D-D+都是低電平。
USB2.0定義的各種PID
六、USB四種傳輸類型
a、批量傳輸(批量事務bulk transation)
i、一次批量事務有三個階段:令牌包階段、數(shù)據(jù)包階段、握手包階段。每個階段都是獨立的包。
ii、批量輸出事務
1、發(fā)一個OUT令牌包(包含設備地址、端點號)
2、發(fā)一個數(shù)據(jù)包(數(shù)據(jù)包類型看數(shù)據(jù)切換位)。地址和端點匹配的設備就收下這個數(shù)據(jù)包。
3、主機切換到接受模式,等設備返回握手包。
* 返回ACK或者NYET(高速模式下),設備解碼令牌包、數(shù)據(jù)包都正確無誤,并且有足夠緩沖區(qū)來保存數(shù)據(jù)。
* 返回NAK,數(shù)據(jù)正確,并且沒有能力接收下一次傳輸,沒有足夠的緩沖區(qū)保存數(shù)據(jù)。
* 返回STALL,設備數(shù)據(jù)正確,但是端點處于掛起狀態(tài)。
* 設備檢測數(shù)據(jù)有錯誤,不做響應,讓主機等待超時
iii、批量輸入事務
1、發(fā)一個IN令牌包(包含設備地址、端點號)
2、主機切換到接受狀態(tài),等待設備返回數(shù)據(jù)。
b、中斷傳輸
跟硬件中斷是不一樣的,不是設備發(fā)出的一個中斷請求,而是主機設備主動保證在不大于某個時間間隔內(nèi)安排一次傳輸。
中斷傳輸用于傳輸數(shù)據(jù)量不大,對時間比較嚴格的設備中。如HID設備的鼠標、鍵盤等。
c、同步傳輸
數(shù)據(jù)量大,實時性高的場合。數(shù)據(jù)出錯不重傳,沒有應答包。
d、控制傳輸
i、有三個過程:建立過程,可選的數(shù)據(jù)過程,狀態(tài)過程
建立過程--使用建立事務(一個輸出數(shù)據(jù)的過程),和批量傳輸?shù)妮敵鍪聞沼袔讉€點不一樣。令牌包不一樣,建立過程使用的是SETUP令牌包,數(shù)據(jù)包類型不一樣,SETUP只能使 用DATA0包,握手包不一樣,只能使用ACK應答(除非出錯不應答)
數(shù)據(jù)過程--(可選,控制傳輸可能沒有數(shù)據(jù)過程),可以包含一筆或者多筆數(shù)據(jù)事務,和批量傳輸?shù)呐渴聞找粯?。控制寫傳輸中,?shù)據(jù)過程的所有數(shù)據(jù)事務都是輸出。控制讀傳輸中,數(shù)據(jù)過程的所有數(shù)據(jù)事務都是輸入。
狀態(tài)過程--也是一筆批量事務,跟數(shù)據(jù)過程相反,控制寫傳輸在狀態(tài)過程是一個批量輸入事務??刂谱x傳輸在狀態(tài)過程是一個批量輸出事務。狀態(tài)過程只是用DATA1包。
ii、控制傳輸要保證數(shù)據(jù)傳輸?shù)耐暾?。如設備枚舉過程,各種描述符的獲取、地址信息、設備配置信息等都是控制傳輸。
七、端點類型和傳輸類型的關(guān)系
a、一個具體的端點,只能工作在一種傳輸模式下。工作在什么模式下的端點,就叫做什么端點。如控制端點、批量端點。
b、端點0是每一個USB設備都默認的控制端點。上電就存在且可用。
八、傳輸類型和端點的最大包長
a、控制傳輸?shù)亩它c
低速模式:固定8字節(jié)
高速模式:固定64字節(jié)
全速模式:8、16、32、64字節(jié)可選
b、同步傳輸?shù)亩它c
低速模式:不支持同步
高速模式:上限1024字節(jié)
全速模式:上限1023字節(jié)
c、中斷傳輸?shù)亩它c
低速模式:上限8字節(jié)
高速模式:上限1024字節(jié)
全速模式:上限64字節(jié)
d、批量傳輸?shù)亩它c
低速模式:不支持批量傳輸
高速模式:固定512字節(jié)
全速模式:8、16、32、64字節(jié)可選
審核編輯:劉清
-
USB接口
+關(guān)注
關(guān)注
9文章
691瀏覽量
55368 -
crc
+關(guān)注
關(guān)注
0文章
197瀏覽量
29357 -
ACK
+關(guān)注
關(guān)注
0文章
28瀏覽量
11110 -
USB設備
+關(guān)注
關(guān)注
0文章
55瀏覽量
16302 -
硬件中斷
+關(guān)注
關(guān)注
0文章
11瀏覽量
6818
原文標題:APM32芯得 EP.24 | 簡單歸納USB設備開發(fā)必備的基礎(chǔ)知識
文章出處:【微信號:geehysemi,微信公眾號:Geehy極海半導體】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論