日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

我理解的USB接口通信的幾個(gè)關(guān)鍵點(diǎn)

 滄海一舍 2013-07-23

 


 


一、我理解的USB接口通信的幾個(gè)關(guān)鍵點(diǎn)


1、硬件連接和數(shù)據(jù)傳輸?shù)奶攸c(diǎn)


1USB設(shè)備接口共有四根線:電源線VBUS,數(shù)據(jù)線D D-,地線GND


采用的是差分?jǐn)?shù)據(jù)傳輸。兩根線有四種狀態(tài):低低、高高、低高、高低。低高高低是正常數(shù)據(jù)傳輸時(shí)所用,低低是設(shè)備斷開狀態(tài),高高好像是USB的復(fù)位狀態(tài)。(這是我的理解,不一定正確嗎,看過書以后再更正。)


2USB傳輸一般采用NRZI(非歸零反相編碼)編碼方式:電平翻轉(zhuǎn)表示0,電平維持表示1。


3)在USB設(shè)備端,有一個(gè)SIE(串行接口引擎),對(duì)差分線上的BIT流進(jìn)行解釋


2、USB設(shè)備檢測的原理


在主機(jī)端,D D-兩根線都被下拉電阻拉到了低電平。若是在設(shè)備端差分線上提供上拉的話,可以被主機(jī)檢測到。比如在 D 線提供3.3V電源、1.5K左右電阻,則該設(shè)備被識(shí)別為“高速設(shè)備12Mbps”;如果在D-線提供上拉,則識(shí)別為低速設(shè)備(1.5Mbps)。


 


3、USB通信的主從原則


一般的USB主機(jī)和設(shè)備之間遵循主從通信的原理,每一次的數(shù)據(jù)傳輸都是又主機(jī)發(fā)起。


如果主機(jī)要輸出數(shù)據(jù),則先發(fā)一個(gè)握手包,通知設(shè)備。然后發(fā)送數(shù)據(jù),設(shè)備接收到數(shù)據(jù)后,再發(fā)送一個(gè)確認(rèn)包。


如果主機(jī)要輸入數(shù)據(jù),也是先發(fā)一個(gè)握手包,通知設(shè)備。設(shè)備然后將準(zhǔn)備好的數(shù)據(jù)發(fā)送給主機(jī)。主機(jī)再給設(shè)備一個(gè)確認(rèn)包。


 


4USB數(shù)據(jù)通信的最小單位


USB數(shù)據(jù)傳輸?shù)幕締挝皇且粋€(gè)包。以異步串行通信對(duì)比:它的一個(gè)傳輸單位是起始字節(jié)、N個(gè)數(shù)據(jù)位、奇偶校驗(yàn)位、停止位。USB傳輸也差不多,只是它稱為包。


包的基本組成包括:同步域、包ID、數(shù)據(jù)、CRC校驗(yàn)、包結(jié)束符。跟異步串行通信本質(zhì)上是相同的。


同步域用來告訴對(duì)方一個(gè)包的開始,并且利用NRZI編碼規(guī)律的特點(diǎn),可以同步通信雙方的時(shí)鐘


包結(jié)束是總線的特殊狀態(tài):低低狀態(tài),我前面提到過。但與我原來的想法有出入,是“低低”狀態(tài)表示“包結(jié)束、復(fù)位”等特殊狀態(tài)


ID用于指明該包的類型(主機(jī)令牌、數(shù)據(jù)、握手)。


對(duì)于包的理解有一個(gè)基本的理解就行了,因?yàn)榘奶幚硎怯?/span>SIE完成的。它會(huì)給用戶提供一些包處理過后的標(biāo)志,比如數(shù)據(jù)傳輸是否正常完成、主機(jī)發(fā)出了復(fù)位信號(hào)等等,用戶能夠理解這些標(biāo)志就可以編程了。


5、USB數(shù)據(jù)包類型與USB的基本事務(wù)


USB接口的工作是由主機(jī)和設(shè)備通信來完成的,所以它所做的每一個(gè)基本工作都要由雙方輸出不同類型的數(shù)據(jù)包。USB的一個(gè)基本工作我們稱為事務(wù)


一個(gè)事務(wù)的基本組成最起碼是三個(gè)包:由主機(jī)發(fā)令牌包,表明要干什么;緊跟著一個(gè)數(shù)據(jù)包(可能是主機(jī)輸出、也可能是設(shè)備);收到數(shù)據(jù)的那一方發(fā)送一個(gè)握手包(表明它有沒有收到、數(shù)據(jù)對(duì)不對(duì))。


令牌包、數(shù)據(jù)包和握手包的含義比較好理解,還有一類特殊包,現(xiàn)在就先不研究了。


 


6USB的控制傳輸


USB有四類傳輸過程:其中批量傳輸、終端傳輸、等時(shí)傳輸比較類似,每個(gè)傳輸就是一個(gè)數(shù)據(jù)輸出或數(shù)據(jù)輸入事務(wù)。主要用于USB主機(jī)與設(shè)備的數(shù)據(jù)交換。


比較復(fù)雜一點(diǎn)的是控制傳輸。


控制傳輸可以分為三個(gè)階段:建立階段、數(shù)據(jù)階段和狀態(tài)階段。


建立階段是一個(gè)建立事務(wù):主機(jī)發(fā)一個(gè)SETUP令牌包、一個(gè)數(shù)據(jù)包,然后設(shè)備必須通過ACK握手包回應(yīng)。


數(shù)據(jù)階段可以是多個(gè)基本數(shù)據(jù)事務(wù)。這個(gè)階段的數(shù)據(jù)傳遞只能是一個(gè)方向,要么全是輸入事務(wù)、要么全是輸出事務(wù)。


狀態(tài)階段是主機(jī)對(duì)數(shù)據(jù)傳輸階段的結(jié)果進(jìn)行檢測:如果主機(jī)讀了數(shù)據(jù),則會(huì)使用一個(gè)數(shù)據(jù)輸出事務(wù)表明自己是否正確收到了設(shè)備的數(shù)據(jù);如果主機(jī)輸出了數(shù)據(jù),它要求設(shè)備返回?cái)?shù)據(jù)接收的情況。實(shí)質(zhì)上是一個(gè)與數(shù)據(jù)階段傳輸方向相反的一個(gè)數(shù)據(jù)包。


 


7、USB的地址和端點(diǎn)


USB主機(jī)是通過地址和端點(diǎn)具體與USB設(shè)備交換數(shù)據(jù)的。即每一個(gè)包都是針對(duì)具體的地址、端點(diǎn)。


USB設(shè)備掛在總線上,只要總線上有數(shù)據(jù)的傳輸,它都能檢測到。但是只有令牌包中指定地址 與本設(shè)備地址相同時(shí),SIE才會(huì)將該數(shù)據(jù)接收進(jìn)來,并對(duì)包中指定的端點(diǎn)進(jìn)行狀態(tài)確認(rèn)。


特別要注意的是:USB設(shè)備的地址是可以動(dòng)態(tài)分配的。在復(fù)位后,它使用地址0。在用地址0與主機(jī)做協(xié)調(diào)后,可以分配到新的地址。然后就可以使用新地址與主機(jī)通信了。


端點(diǎn)實(shí)際上是一個(gè)數(shù)據(jù)緩沖區(qū)(我的理解)。它USB傳輸類型對(duì)應(yīng),每種類型都有輸入、輸出端點(diǎn)。比如控制傳輸對(duì)應(yīng)有控制端點(diǎn)兩個(gè),一個(gè)輸入(主機(jī)想要獲取設(shè)備的控制傳輸數(shù)據(jù)時(shí),就從這里取,當(dāng)然設(shè)備先要準(zhǔn)備好),一個(gè)輸出(主機(jī)在控制傳輸階段傳輸給設(shè)備的數(shù)據(jù),就會(huì)由SIE寫入這個(gè)輸出端點(diǎn),然后USB固件程序就可以從該端點(diǎn)讀取主機(jī)來的數(shù)據(jù)進(jìn)行處理。


 


8、USB的描述符


我覺得它實(shí)質(zhì)上就是一個(gè)具體設(shè)備所有屬性、配置、能力等等所有信息的綜合。這是一個(gè)將數(shù)據(jù)與數(shù)據(jù)處理過程分開來的典型例子。


設(shè)備描述符:主要指明設(shè)備的類型、所使用的協(xié)議、VID、PID、設(shè)備版本號(hào)等。一個(gè)特別重要的信息是:控制傳輸輸入端點(diǎn)0支持的數(shù)據(jù)長度。


其它描述符性質(zhì)差不多,我這里就不再一一敘述了。


 


 


 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多