12.19.2006

USB 2.0 bus signal. device states on startup.

用示波器量 isp1582 pci 的 3.3 V power,在2440a cpu running時,noise 很大(4V p-p),break時noise 很小(200mV p-p幾乎沒有)。

將code 放到internal SRAM來run 也一樣。

所以把RESET pin 拉到Vcc 應該也無效。

請Ricky 加上粗一點的地線,連接targetboard和demoboard,並且加上大電容。

結果還是一樣。


USB D+/D- Signal Definition:

H.H : Single Ended One - 無效,不應該出現在bus上
H.L : Differential 1
L.H : Differential 0
L.L : Single Ended Zero - End of Packet, Disconnect, Reset。

其中Differential 0, 1被用來定義傳輸資料。
根據speed 不同,Differential 0/1的代表意義也不同。
USB 用J.K 狀態來代表通訊時bus的電壓狀態。
J. K 的定義在Low Speed, Full Speed, High Speed時不一樣。
其中Full Speed, High Speed的J, K定義是一樣的。

Low Speed
J : Differential 0
K : Differential 1

Full/High Speed
J : Differential 1
K : Differential 0

以下對Full/High Speed Bus 描述

BUS Idle : 維持Different 1 (J)

Reset : 當bus處於SingleEndedZero (D+/- both 0) 2.5us 之後,bus 轉換進入 Reset狀態。


USB 2.0 hub 在偵測到某device 是Idle時,就會進行HighSpeed Handshaking 偵測。

  1. Device偵測到VBUS有電壓,將D+接到High,作Softct。
  2. Device 作Softct (D+ high for 3ms?)讓Host偵測到。
  3. Host將bus 維持在SigleEndedZero(2.5us),讓device進入Reset。
  4. Host接著送出一串快速的J.K信號,讓 device 進入HighSpeed。
  5. Host送出Endpoint 0 Setup ,Request Descriptor。
所以device收到interrupt的順序是:
  1. VBUS
  2. BUS RESET
  3. HSpeed State
  4. SETUP0
ref : Book "Usb Complete 3rd edition" Chapter 18 : 信號與編碼。

1 則留言:

大頭鰱 提到...

你好
請問你有寫過linux usbe gadget driver 嗎?