USB入門系列之三 —— USB的電氣特性 作者: 時間:2016-12-13 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢 收藏 標(biāo)準的USB使用4根線:5V電源線(Vbus),差分數(shù)據(jù)線負(D-),差分數(shù)據(jù)線正(D+),地(Gnd)。在USB OTG中,又增加了一種mini接口,使用的是5根線,比標(biāo)準的USB多了一根身份識別(ID)線。USB使用的是差分傳輸模式,有兩根數(shù)據(jù)線,分別是D+和D-。在USB的低速和全速模式中,采用的是電壓傳輸模式。而在高速模式下,則是電流傳輸模式。關(guān)于具體的高低電平門限值,請參看USB協(xié)議。為了防止出現(xiàn)長時間的0或者1(這樣不利于時鐘信號的提取),在發(fā)送數(shù)據(jù)前要經(jīng)過位填充處理。然后再將數(shù)據(jù)串行化,發(fā)送到數(shù)據(jù)線上,由兩根數(shù)據(jù)線的差分值來表示0或者1。而在接收端,則剛好是相反的過程。接收端采樣數(shù)據(jù)線,將數(shù)據(jù)并行化,并同時去掉未填充,然后解析數(shù)據(jù)。通常,我們使用現(xiàn)成的USB芯片,像位填充,串行化這些芯片內(nèi)部的硬件已經(jīng)幫我們做好了,因此通常我們并不用關(guān)心這些細節(jié)。在設(shè)備接收數(shù)據(jù)時,芯片的串行接口引擎(SIE)會接收屬于自己地址的數(shù)據(jù),并根據(jù)相應(yīng)的端口號,放到相應(yīng)的緩沖區(qū)內(nèi),并返回ACK給主機進行確認,然后產(chǎn)生中斷請求,通知我們的程序,已經(jīng)收到數(shù)據(jù)包了。在我們還未處理完緩沖區(qū)的數(shù)據(jù)之前,如果再收到對該端點的輸出請求,USB芯片將會使用NAK返回,告訴主機端點現(xiàn)在忙,主機檢測到NAK后,過段時間會重試輸出數(shù)據(jù),直到超時為止;發(fā)送數(shù)據(jù)時,用戶將數(shù)據(jù)寫入USB芯片的緩沖區(qū),并通知USB芯片緩沖區(qū)內(nèi)數(shù)據(jù)可用,然后USB芯片檢測到主機請求對應(yīng)的端點輸入時,它就會將數(shù)據(jù)返回,數(shù)據(jù)發(fā)送完畢并收到主機的ACK確認之后,產(chǎn)生中斷請求通知應(yīng)用程序數(shù)據(jù)已經(jīng)發(fā)送完畢。如果USB芯片已經(jīng)收到了輸入請求,但是用戶程序還未填充好緩沖區(qū),它也會用NAK返回,告訴主機數(shù)據(jù)還未準備好。主機收到NAK后,過段時間會重試,直到超時為止。在USB協(xié)議中規(guī)定,設(shè)備在未配置之前,可以從Vbus上最多獲取100mA的電流;在配置之后,最多可從Vbus上獲取500mA的電流。Vbus是5V的電壓,具體的參數(shù)請參看USB協(xié)議。
評論