- System Powerup
- bus-reset event
- 由full-speed 轉為 high-speed
- Mode Register
- Interrupt Configuration Register
- Interrupt Enable Register
- DMA Configuration Register
- DMA Hardware Register
- Endpoint (A lot Registers)
即使不是所有的Endpoint都要用到,還是要將所有Endpoint都Initialize :
- 設定每一個Endpoint 的 MaxPacketSize
- 設定每一個Endpoint 的 Type,並且Enable。
不能同時將同一個的Endpoint的MaxPacketSize,Type 設定好並且Enable後,再作下一個?
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 說:查UB/LB 是用在muti-byte width (>8 bit)時使用的,主要是在write動作,要指示target address是哪一個byte 的signal。
- BWSCON 的 ST2 (因為用CS2),要設為1 : Using UB/LB
- BWSCON 的 WS2(因為用CS2),要設為0 : Wait disable。
WS 是外部wait signal,用來延長access cycle time。
沒有留言:
張貼留言