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