USB封包格式
發(fā)布時間:2008/12/17 0:00:00 訪問次數(shù):2599
1.起始(sop)封包
根集線器會在每1 ms時,送出sof封包。這介于2個sof封包之間的時間,即稱為幀(frame)。sof封包雖是屬于令牌封包的一種,但卻具有獨自的pid形態(tài)名稱sof。通常目標(biāo)設(shè)各都利用sof封包來辨識幀的起點。這個封包常用于等時傳輸。也就是在1 ms的幀(高速是125 μs微幀,將1 ms切成8份)開始時,等時傳輸會利用sof激活傳輸并達到同步傳輸?shù)淖饔。而在每一個幀開始時,sof會傳給所有連接上去的全速設(shè)各(包含集線器)。因此,sof封包并不適用于低速設(shè)備。這個封包內(nèi)包含了一個幀碼,其可不斷地遞增,且在高達最大值時反轉(zhuǎn)為0,重新再計
數(shù)一次。這個幀碼是用來表示幀的計數(shù)值,因此,8個微幀都使用同一個幀碼值。若必要時,高速設(shè)各可計算出sof的重復(fù)使用次數(shù),并計算出微幀的數(shù)量。通過縮短微幀的周期時間,便可減少高速設(shè)各對于緩沖存儲器的需求。
如圖1所示,高速的根集線器將會使用額外的sof來傳輸8個微幀。有些書籍會把這種高速的sof,另命名為usof。這種增加的微幀,同時也替高速的連接帶來了更復(fù)雜的控制方式。
圖1 usb幀與微幀示意圖
此外,再利用如圖2所示的簡圖來說明主機所送出的一個sof封包的格式。其中,sof的封包標(biāo)識符,pid數(shù)據(jù)域的值為0xa5。pid[3:o]=0101與pid[3:o]=1010所產(chǎn)生的,只不過它的傳送順序須由lsb→msb。因此,即可推算出0xa5。以下,所有的pid數(shù)據(jù)域皆可由此推算而得到。
圖2 sof封包的各種組成字段
圖2顯示了sof封包的各種字段與相關(guān)的定義。
此外,端點可以通過sof封包來加以同步,或是以幀碼值來作為時間的參考依據(jù)。當(dāng)整個usb總線上沒有usb傳輸時,sof封包也可避免讓設(shè)備切人低功率的中止(suspend)狀態(tài)。再者,雖然在低速設(shè)各上,是看不到sof封包的,但相反,設(shè)各的集線器使用了前面所提及的bop(end of-packet)信號,且在每一個幀設(shè)置一次。因此,有時后也稱這種信號為設(shè)各的低速存活(keep alive)信號。所以說,sof/usof封包是給全速/高速設(shè)各來使用的,而低速存活信號卻可避免讓低速設(shè)備切入中止?fàn)顟B(tài)中。
2.令牌封包
由于usb的數(shù)據(jù)交易是由pc主機端所激活的,所以在每一個數(shù)據(jù)交易中,必須以下列的5個數(shù)據(jù)域所組合而成的令牌封包作為起始,并執(zhí)行通信協(xié)議的前導(dǎo)工作。一個令牌封包含蓋了5個數(shù)據(jù)域sync、pid、addr、endp與crc5。這即是54233的第1個數(shù)字:5。如下所列為其令牌封包的各個組成的數(shù)據(jù)域。
令牌封包的pid數(shù)據(jù)域(pid[1:0]=[0,1])中包含了out、in、setup這3種pid類型名稱。也就是包含了out令牌封包、in令牌封包以及setup令牌封包。例如,在執(zhí)行控制傳輸主機要通過預(yù)設(shè)的地址取得設(shè)備描述符(get ̄descriptor),就必須先執(zhí)行下列的setup令牌封包,作為每一次控制傳輸?shù)拈_始,其中,pid欄變成setup的pid類型名稱(0xb4)。in令牌封包,則是主機用來通知設(shè)備,將要執(zhí)行數(shù)據(jù)輸入的工作。而out令牌封包則剛好相反。
圖3 顯示了pc主機所起始的setup令牌封包。
圖3 令牌封包的各種組成的字段
3.?dāng)?shù)據(jù)封包
在usb接口中,主機執(zhí)行了總線的管理、數(shù)據(jù)傳輸以及設(shè)各對主機所提出的要求命令作出響應(yīng)的動作。這些所要傳輸?shù)臄?shù)據(jù)與要求命令是什么呢?因此,必須通過數(shù)據(jù)封包來執(zhí)行這項工作。
而由setup、in與out令牌封包所起始的數(shù)據(jù)傳輸,將會以datao、data1、data2與mdata封包來加以實現(xiàn)。一個數(shù)據(jù)封包含了4個數(shù)據(jù)域:sync、pid、data與crc16。各個字段的意義之前已有介紹過。這即是54233的第2個數(shù)字:4。在這里,要稍微注意的是data字段內(nèi)所放置的位值,須根據(jù)usb設(shè)各的傳輸設(shè)備(低速、高速與全速)以及傳輸類型(中斷傳輸、批量傳輸與等時傳輸)而定,且須以所設(shè)置的maxpacksize字節(jié)為基本單位。也即是,若傳輸?shù)臄?shù)據(jù)不足maxpacksize字節(jié),或是傳輸?shù)阶詈笏S嗟囊膊蛔鉳axpacksize字節(jié),則仍須傳輸maxpacksize個字節(jié)的數(shù)據(jù)域。
列出由4個數(shù)據(jù)域所組合而成的數(shù)據(jù)封包。
數(shù)據(jù)封包的pid數(shù)據(jù)域(pid[1:0]=[1:1])包含了4種類型:data0、data1、data2與mdata。而根據(jù)usb規(guī)范,最初的數(shù)據(jù)封包都以data0作為開始,其后才是data1,然后依此方式交替切換。這個動作稱之為數(shù)據(jù)緊密連接(data toggle)。這個動作有點類似將數(shù)據(jù)緊
1.起始(sop)封包
根集線器會在每1 ms時,送出sof封包。這介于2個sof封包之間的時間,即稱為幀(frame)。sof封包雖是屬于令牌封包的一種,但卻具有獨自的pid形態(tài)名稱sof。通常目標(biāo)設(shè)各都利用sof封包來辨識幀的起點。這個封包常用于等時傳輸。也就是在1 ms的幀(高速是125 μs微幀,將1 ms切成8份)開始時,等時傳輸會利用sof激活傳輸并達到同步傳輸?shù)淖饔。而在每一個幀開始時,sof會傳給所有連接上去的全速設(shè)各(包含集線器)。因此,sof封包并不適用于低速設(shè)備。這個封包內(nèi)包含了一個幀碼,其可不斷地遞增,且在高達最大值時反轉(zhuǎn)為0,重新再計
數(shù)一次。這個幀碼是用來表示幀的計數(shù)值,因此,8個微幀都使用同一個幀碼值。若必要時,高速設(shè)各可計算出sof的重復(fù)使用次數(shù),并計算出微幀的數(shù)量。通過縮短微幀的周期時間,便可減少高速設(shè)各對于緩沖存儲器的需求。
如圖1所示,高速的根集線器將會使用額外的sof來傳輸8個微幀。有些書籍會把這種高速的sof,另命名為usof。這種增加的微幀,同時也替高速的連接帶來了更復(fù)雜的控制方式。
圖1 usb幀與微幀示意圖
此外,再利用如圖2所示的簡圖來說明主機所送出的一個sof封包的格式。其中,sof的封包標(biāo)識符,pid數(shù)據(jù)域的值為0xa5。pid[3:o]=0101與pid[3:o]=1010所產(chǎn)生的,只不過它的傳送順序須由lsb→msb。因此,即可推算出0xa5。以下,所有的pid數(shù)據(jù)域皆可由此推算而得到。
圖2 sof封包的各種組成字段
圖2顯示了sof封包的各種字段與相關(guān)的定義。
此外,端點可以通過sof封包來加以同步,或是以幀碼值來作為時間的參考依據(jù)。當(dāng)整個usb總線上沒有usb傳輸時,sof封包也可避免讓設(shè)備切人低功率的中止(suspend)狀態(tài)。再者,雖然在低速設(shè)各上,是看不到sof封包的,但相反,設(shè)各的集線器使用了前面所提及的bop(end of-packet)信號,且在每一個幀設(shè)置一次。因此,有時后也稱這種信號為設(shè)各的低速存活(keep alive)信號。所以說,sof/usof封包是給全速/高速設(shè)各來使用的,而低速存活信號卻可避免讓低速設(shè)備切入中止?fàn)顟B(tài)中。
2.令牌封包
由于usb的數(shù)據(jù)交易是由pc主機端所激活的,所以在每一個數(shù)據(jù)交易中,必須以下列的5個數(shù)據(jù)域所組合而成的令牌封包作為起始,并執(zhí)行通信協(xié)議的前導(dǎo)工作。一個令牌封包含蓋了5個數(shù)據(jù)域sync、pid、addr、endp與crc5。這即是54233的第1個數(shù)字:5。如下所列為其令牌封包的各個組成的數(shù)據(jù)域。
令牌封包的pid數(shù)據(jù)域(pid[1:0]=[0,1])中包含了out、in、setup這3種pid類型名稱。也就是包含了out令牌封包、in令牌封包以及setup令牌封包。例如,在執(zhí)行控制傳輸主機要通過預(yù)設(shè)的地址取得設(shè)備描述符(get ̄descriptor),就必須先執(zhí)行下列的setup令牌封包,作為每一次控制傳輸?shù)拈_始,其中,pid欄變成setup的pid類型名稱(0xb4)。in令牌封包,則是主機用來通知設(shè)備,將要執(zhí)行數(shù)據(jù)輸入的工作。而out令牌封包則剛好相反。
圖3 顯示了pc主機所起始的setup令牌封包。
圖3 令牌封包的各種組成的字段
3.?dāng)?shù)據(jù)封包
在usb接口中,主機執(zhí)行了總線的管理、數(shù)據(jù)傳輸以及設(shè)各對主機所提出的要求命令作出響應(yīng)的動作。這些所要傳輸?shù)臄?shù)據(jù)與要求命令是什么呢?因此,必須通過數(shù)據(jù)封包來執(zhí)行這項工作。
而由setup、in與out令牌封包所起始的數(shù)據(jù)傳輸,將會以datao、data1、data2與mdata封包來加以實現(xiàn)。一個數(shù)據(jù)封包含了4個數(shù)據(jù)域:sync、pid、data與crc16。各個字段的意義之前已有介紹過。這即是54233的第2個數(shù)字:4。在這里,要稍微注意的是data字段內(nèi)所放置的位值,須根據(jù)usb設(shè)各的傳輸設(shè)備(低速、高速與全速)以及傳輸類型(中斷傳輸、批量傳輸與等時傳輸)而定,且須以所設(shè)置的maxpacksize字節(jié)為基本單位。也即是,若傳輸?shù)臄?shù)據(jù)不足maxpacksize字節(jié),或是傳輸?shù)阶詈笏S嗟囊膊蛔鉳axpacksize字節(jié),則仍須傳輸maxpacksize個字節(jié)的數(shù)據(jù)域。
列出由4個數(shù)據(jù)域所組合而成的數(shù)據(jù)封包。
數(shù)據(jù)封包的pid數(shù)據(jù)域(pid[1:0]=[1:1])包含了4種類型:data0、data1、data2與mdata。而根據(jù)usb規(guī)范,最初的數(shù)據(jù)封包都以data0作為開始,其后才是data1,然后依此方式交替切換。這個動作稱之為數(shù)據(jù)緊密連接(data toggle)。這個動作有點類似將數(shù)據(jù)緊
上一篇:背景燈初始化驅(qū)動程序代碼
上一篇:AC97驅(qū)動程序代碼
熱門點擊
- USB封包格式
- USB通信協(xié)議——傳輸類型
- USB通信協(xié)議——錯誤檢查
- USB通信協(xié)議——循環(huán)冗佘檢驗位
- 低速與全速的USB總線狀態(tài)
- USB的編碼方式
- USB接口的電氣特性
- Flash的選擇
- USB通信協(xié)議——數(shù)據(jù)交易
- USB通信協(xié)議——傳輸
推薦技術(shù)資料
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究