11.23.2006

Philip USB 2.0 : ISP1583/2

每次...
  • System Powerup
  • bus-reset event
  • 由full-speed 轉為 high-speed
都要作Initialize:
  • Mode Register
  • Interrupt Configuration Register
  • Interrupt Enable Register
  • DMA Configuration Register
  • DMA Hardware Register
  • Endpoint (A lot Registers)
其中 Initialize Endpoint..

即使不是所有的Endpoint都要用到,還是要將所有Endpoint都Initialize :
  • 設定每一個Endpoint 的 MaxPacketSize
  • 設定每一個Endpoint 的 Type,並且Enable。
    不能同時將同一個的Endpoint的MaxPacketSize,Type 設定好並且Enable後,再作下一個?
Source Code:
SourceCode中,HighByte和LowByte好像是相反的 : BigEnding ?

Mode = 0x0802; 有點問題,bit 10-12是reserved,竟然有值。
應該是0x0208
IntConfig = 0x54;
CDBGMOD =01.(Int on all ACK),
DDBGMODIN =01 (Int on ACK),
DDBGMODOUT=01 (Int on ACK and NYET)
IntEnable = 0x79090000; 有點問題..bit 26-31 是reserved,竟然有值

Endpoint Config : 只有Config Endpoint 4.5

EndPointIndex = 4;
MaxPackSize = 0x4000;
EndPointIndex = 5;
MaxPackSize = 0x4000;

EndPointIndex = 4;
Type = 0x1600;

Enumeration Process


USB 的 enumeration 動作可以區分為3個stages:
  • SETUP token with data IN stage
  • SETUP token with data OUT stage
  • SETUP token with no data stage

真倒楣,CS, RD, WR, ADD 都正確,但是DATA就是不會動作,main cpu board : smdk2440 的address/data bus又通過一個CPLD,無法知道是不是要對他做什麼動作。
DATA BUS好像是Lock起來一樣,一直維持在High/Low。
ANDY 說:
  • BWSCON 的 ST2 (因為用CS2),要設為1 : Using UB/LB
  • BWSCON 的 WS2(因為用CS2),要設為0 : Wait disable。
查UB/LB 是用在muti-byte width (>8 bit)時使用的,主要是在write動作,要指示target address是哪一個byte 的signal。
WS 是外部wait signal,用來延長access cycle time。

沒有留言: