USB封包格式
圖3 顯示了PC主機(jī)所起始的SETUP令牌封包。
圖3 令牌封包的各種組成的字段
3.?dāng)?shù)據(jù)封包
在USB接口中,主機(jī)執(zhí)行了總線(xiàn)的管理、數(shù)據(jù)傳輸以及設(shè)各對(duì)主機(jī)所提出的要求命令作出響應(yīng)的動(dòng)作。這些所要傳輸?shù)臄?shù)據(jù)與要求命令是什么呢?因此,必須通過(guò)數(shù)據(jù)封包來(lái)執(zhí)行這項(xiàng)工作。
而由SETUP、IN與OUT令牌封包所起始的數(shù)據(jù)傳輸,將會(huì)以DATAO、DATA1、DATA2與MDATA封包來(lái)加以實(shí)現(xiàn)。一個(gè)數(shù)據(jù)封包含了4個(gè)數(shù)據(jù)域:SYNC、PID、DATA與CRC16。各個(gè)字段的意義之前已有介紹過(guò)。這即是54233的第2個(gè)數(shù)字:4。在這里,要稍微注意的是DATA字段內(nèi)所放置的位值,須根據(jù)USB設(shè)各的傳輸設(shè)備(低速、高速與全速)以及傳輸類(lèi)型(中斷傳輸、批量傳輸與等時(shí)傳輸)而定,且須以所設(shè)置的MaxPackSize字節(jié)為基本單位。也即是,若傳輸?shù)臄?shù)據(jù)不足MaxPackSize字節(jié),或是傳輸?shù)阶詈笏S嗟囊膊蛔鉓axPackSize字節(jié),則仍須傳輸MaxPackSize個(gè)字節(jié)的數(shù)據(jù)域。
列出由4個(gè)數(shù)據(jù)域所組合而成的數(shù)據(jù)封包。
數(shù)據(jù)封包的PID數(shù)據(jù)域(PID[1:0]=[1:1])包含了4種類(lèi)型:DATA0、DATA1、DATA2與MDATA。而根據(jù)USB規(guī)范,最初的數(shù)據(jù)封包都以DATA0作為開(kāi)始,其后才是DATA1,然后依此方式交替切換。這個(gè)動(dòng)作稱(chēng)之為數(shù)據(jù)緊密連接(data toggle)。這個(gè)動(dòng)作有點(diǎn)類(lèi)似將數(shù)據(jù)緊密連接。如此就可確保整個(gè)傳輸過(guò)程中,主機(jī)能與設(shè)各維持同步,且作為幀錯(cuò)之用。例如,如果兩個(gè)連續(xù)的DATA0被接收到的話(huà),意味著DATA1封包被遺漏掉,并產(chǎn)生了錯(cuò)誤的狀況。而DATA2與MDATA,則僅適用于高速的等時(shí)傳輸。
若主機(jī)要針對(duì)特別尋址的設(shè)各端點(diǎn),送出取得設(shè)各描述符的命令,就可如圖4所示,將含有命令的數(shù)據(jù)封包傳出。其中,須特別注意的是,由于是控制傳輸,所以數(shù)據(jù)域中僅有8字節(jié)。至于“8006 0001 000040”的設(shè)備要求的意義。
圖4 數(shù)據(jù)封包的各種組成字段
4.握手封包
握手封包是最簡(jiǎn)單的封包類(lèi)型。在這個(gè)握手封包中,僅包含一個(gè)PID數(shù)據(jù)域。它的格式如下所列,僅包含SYNC與PID兩個(gè)數(shù)據(jù)域,這即是54233的第3個(gè)數(shù)字:2。
握手封包的PID數(shù)據(jù)域(PID[1:0]=[1:0])中包含了ACK、NAK、STALL與NYET這4種PID類(lèi)型名稱(chēng)。也就是含有ACK、NAK、STALL與NYET握手封包。
延伸上一個(gè)圖例,如果設(shè)備已收到主機(jī)要執(zhí)行取得設(shè)備描述符的命令,設(shè)備就以握手封包來(lái)加以響應(yīng)。因此須注意的是,如果設(shè)備已準(zhǔn)備接收的話(huà)就以ACK握手封包響應(yīng);如果尚未就緒就使用NAK握手封包響應(yīng);如果發(fā)生錯(cuò)誤而停滯,就使用STALL握手封包響應(yīng)。圖5顯示一個(gè)握手封包的格式,其中ACK的PID數(shù)據(jù)域值為Ox4B,剛好與SETUP的PID數(shù)據(jù)域值相反。
圖5 握手封包的各種組成字段
pid控制相關(guān)文章:pid控制原理
三相異步電動(dòng)機(jī)相關(guān)文章:三相異步電動(dòng)機(jī)原理
評(píng)論