初涉USB,初學(xué)者USB入門(mén)總結(3) 數據包闡述
各 種總線(xiàn)的數據傳輸都是以固定的層次協(xié)議進(jìn)行的,USB當然也不例外。所謂的層次也只是個(gè)抽象的概念罷了,就是表達一種依附關(guān)系,上層要依賴(lài)與底層,上層以 底層為基礎,上層只需要關(guān)心自己的東西就行了,如果你還不明白,那就繼續看,學(xué)習一個(gè)東西不可能一兩句話(huà)說(shuō)的明白一個(gè)點(diǎn),需要全面了解后才能清楚各個(gè)點(diǎn)。
要 實(shí)現兩個(gè)機器(機器的范圍比較廣,可以是電腦,交換機,單片機)的通信總是要有一個(gè)載體才可以,對于機器當然是電平高低為載體,具體的說(shuō)機器甲要告訴機器 乙一件事情(比如說(shuō)一條指令),那么機器甲可以通過(guò)一根線(xiàn)(串行數據總線(xiàn))連到機器乙的一個(gè)IO口上,甲發(fā)送一個(gè)個(gè)的高低電平,乙固定時(shí)間檢測自己的這個(gè) IO口,然后逐個(gè)記錄下放到自己的緩沖里,這樣乙就收到甲送的數據了。上述就是一個(gè)簡(jiǎn)單的數據鏈路層(計算機網(wǎng)絡(luò )里這么叫)的描述,這一層要保證的就是甲 發(fā)的每一位數據,乙都可以正確及時(shí)的接受,并且對在傳輸過(guò)程中出錯的數據做出反應。其實(shí)比數據連路更底層的還有物理層,這就是真正的物理介質(zhì),對于機器就 是電線(xiàn)了,數據就是電線(xiàn)上傳輸的電壓,USB是用的四線(xiàn),兩個(gè)電源,兩個(gè)數據線(xiàn)。
這里也打個(gè)比方,比如人與人進(jìn)行交流,我們當然是通過(guò)說(shuō)話(huà)了,物理層就是空氣和傳輸的聲波,數據鏈路層就是我們說(shuō)的每一個(gè)字,物理層就是空氣,負責把我們說(shuō)的話(huà)轉換成聲波傳給對方,數據鏈路層負責讓對方能正確的聽(tīng)到每個(gè)字,如果聽(tīng)的不清可以告訴對方重新說(shuō)一遍。
經(jīng) 過(guò)上述的兩個(gè)底層,就可以保證每一位數據可以正確的傳到對方那里去。下一步的工作當然是解析數據代表了什么,一般來(lái)說(shuō),數據都是以一串數為單位,一般稱(chēng)為 一個(gè)包,機器間傳輸都是以一個(gè)包為單位傳出,就像人們說(shuō)話(huà)都是以一句話(huà)為單位輸出一樣。每一個(gè)包包含有許多位數據,這些數據又分段表示不同的意義,如圖 一,這是一個(gè)USB令牌階段的包,Sync是同步數據(相當于說(shuō)話(huà)時(shí)先打個(gè)招呼,告訴對方要跟他說(shuō)話(huà)了),PID是包標示(告訴對方這個(gè)包是干什么用 的),ADDR是對方的地址(叫對方的名字),ENDP是用端點(diǎn)幾通訊(先不介紹這個(gè)),CRC5是校驗位(判斷這個(gè)包是否在傳輸中出錯),EOP是包結 束。
|--------------------------------------------------------|
|Sync|PID|ADDR|ENDP|CRC5|EOP|
|________________________________________________________|
圖一
USB 的數據包又分為三種,一個(gè)是令牌包,一個(gè)是數據包,另一個(gè)是握手包。每一次的USB通訊事務(wù)處理都是以令牌包開(kāi)頭,告訴對方要跟誰(shuí)說(shuō)話(huà),這句話(huà)是用來(lái)干嘛 的。如果要求有數據傳輸,則下一步就是數據包,另外如果要求對方要有反饋,則會(huì )發(fā)出握手包。令牌包又簡(jiǎn)單的包括OUT,IN,STEP三種類(lèi)型,OUT是 用于主機告訴設備主機要向USB設備發(fā)送數據,IN是用于主機告訴設備要上傳數據,而STEUP是用于主機向USB設備發(fā)送配置信息,在枚舉過(guò)程中會(huì )用 到。另外數據包和握手包的具體格式什么的,可以參照詳細的協(xié)議。
可以看到在所以的通訊過(guò)程中,主機都是發(fā)起者,不管是主機發(fā)送數據到USB設備還是USB設備發(fā)送數據到主機,都必須收主機控制。圖二為一次事務(wù)的過(guò)程
令牌階段——》數據階段——》握手階段
圖二
這個(gè)過(guò)程可以這樣描述,甲和乙對話(huà),甲是老板,乙是職員。第一節已經(jīng)講過(guò)了,乙面試就是枚舉,在這個(gè)過(guò)程中,甲多段的發(fā)送STEP令牌包給乙,乙收到后如果要反饋數據,就發(fā)數據包給甲,甲正確接收后,跟甲握握手,表示這次對話(huà)成功。
乙被正式錄取后,甲會(huì )分派任務(wù)(OUT),這時(shí)甲對乙說(shuō)有任務(wù)給你(令牌階段),然后乙就開(kāi)始聽(tīng),甲說(shuō)你的任務(wù)就是記錄數據并且上報(這段話(huà)就是數據包),乙說(shuō)好的(握手包)。
乙開(kāi)始正式工作,并且記錄數據。過(guò)了一段時(shí)間,甲開(kāi)始要求提交數據(IN),乙把數據報告給甲(數據階段),甲說(shuō)好(握手成功)。這里乙不能主動(dòng)的去向老板匯報,只能被動(dòng)的干活。
上面已經(jīng)講USB主機和設備間數據傳輸的過(guò)程,都是我個(gè)人理解,有不正確和不到位的大家提出,方便初學(xué)者理解,謝謝··
評論