嵌入式开发者社区

标题: usb 2.0 [打印本页]

作者: quwenqi    时间: 2017-11-6 09:54
标题: usb 2.0
你好:( j, b/ B; z. R( O9 o. Q

. _& v$ u8 j5 q7 y  我们公司在OMAPL138_StarterWare_1_10_04_01的基础上( OMAPL138_StarterWare_1_10_04_01\examples\evmOMAPL138\usb_dev_msc),. f9 b1 t7 s0 X# g8 H, e) S0 a

. ]. J) v! x8 b4 F" Z3 u; O$ t" J  p  实现了usb mass storage功能,在win7系统下面u盘功能够顺利实际,但是在电脑上接一个hub后,然后将u盘接到hub上,u盘不能正解识别。* J- n2 D% N, x+ i

- D) G2 @7 r1 e' ~  _$ K0 S- T; n  目前分析代码发现经hub转接后,电脑发(SCSI_READ_10 0x28)这个命令,usb 复位。
& \: i, \" C  K' ?! r
. B; V* S# u* J) L& n( T" v7 T3 m9 }  UsbPhyOn 代码如下,外部时钟配为19.2M. device mode:6 ?) a: q+ U) e2 @7 f, O
% @! `  @9 c! O& b/ R
  请问个和我们的设备电流是否有关:
7 C3 _+ _0 D- J$ |' r# ]/ }- _
; D2 u7 G( \: ]$ ]; j2 \void UsbPhyOn(unsigned int ulIndex)
" n0 E; Y. h& Z$ @2 K, h{
: W+ k4 k. @" w       
. f" M3 ^# I% l! m2 A   unsigned int  reg = 0;' C3 c! \% w, w4 T! h1 B" t7 D
   BSP_KickUnlock();
6 ~$ K" M6 M; w3 n( G        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);1 I( Y7 ^' z( p$ U( U
        reg &= ~(CFGCHIP2_REFFREQ);4 S7 I) U( _/ w/ `3 ~
        reg |= CFGCHIP2_REFFREQ_19_2MHZ;
! ^9 Z, w7 D$ W        //reg |=CFGCHIP2_REFFREQ_24MHZ;* |5 V* o. W/ }- S( |
        HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr)=reg;
+ g7 R1 F+ }( f) z$ Z0 ]$ \
( m3 r5 G2 Y/ J* \$ _        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
$ e" H# h, J6 ?( M. ^        tprintf("\r\n clk==0x%08x:\r\n", reg &= (CFGCHIP2_REFFREQ));
6 ~$ P3 B$ Y1 J  |6 Z( S4 P: U5 e* u) y% r
#if debug& e' a% `) q* K# Z  i1 T
/***internal 2.0***/ //aux_clk
6 L! _6 G3 E: k8 C6 M# a5 @7 U; M8 Z' n8 g; `2 M
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);$ K% f" d! R3 s" W1 l0 d/ g
    reg &= ~(CFGCHIP2_USB2PHYCLKMUX);0 r4 l9 a' v" y7 r
    reg |= (CFGCHIP2_USB2PHYCLKMUX);, j; R9 v/ v1 B  f( I
    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
# `: G& C# C8 \$ V3 X: Y; z* w+ o/ n" ^- E8 S
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);& l& v( h& |/ S1 `. c
    tprintf("\r\n 2.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB2PHYCLKMUX));3 m9 e2 N) k! G& ?) C' R

  K6 n3 N/ _; ]. U" H( s# V1 M) G/***internal 1.0***/ ///phy out
8 I8 T$ s; r3 m5 s6 x  V7 r* h
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
+ ~! A7 L" a" d* g9 N. g    reg &= ~(CFGCHIP2_USB1PHYCLKMUX);  ^! i) W5 V9 k; ^# ^. N( {
    //reg |= (CFGCHIP2_USB1PHYCLKMUX);1 g- x# R4 k. }2 ], z% M8 ]
    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
( [% l4 x* i8 L2 C# Q6 [, T/ o" v8 d7 w/ m. i
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);/ i: D, {( Y# m) X) d/ N
    tprintf("\r\n 1.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB1PHYCLKMUX));0 V- n2 a# U8 |$ [
$ c4 y  w. _, E( L
2 ?5 i. O1 K. i" i9 A# q& u% ?
/***phy run***/ //phy out! B! w! ?; T) M; j

5 A9 y# x6 L* s4 g; B) J        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
; i* A- C- ?# @5 }        //tprintf("\r\n CFGCHIP2_PHYPWRDN=0x%08x:\r\n", reg &= (CFGCHIP2_PHYPWRDN));
- e3 V- Y$ x% Q
8 H" k1 E+ @! ^. a, O: F        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
! o# N% \% l  P  @1 e        reg &= ~(CFGCHIP2_VBDTCTEN);
) G: }: b% F' ]2 m3 f0 a9 Y9 @  u1 {: g        reg |= (CFGCHIP2_VBDTCTEN);
: `. B2 k4 ~4 R1 N, Y        tprintf("\r\n phy CFGCHIP2_VBDTCTEN=0x%08x:\r\n", reg &= (CFGCHIP2_VBDTCTEN));4 J1 e- c  R/ q) A
#endif$ j: e' z: [- n1 A2 U# _5 g, g
. K" R: |- ^) V7 K3 i5 O& _+ O
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr); 5 N, A# U; H$ F% K) ]$ t. H6 N
    reg &= ~(CFGCHIP2_RESET | CFGCHIP2_PHYPWRDN | CFGCHIP2_OTGPWRDN);   , s2 j5 c* I# r' M
/ r" }/ d$ _6 y* e1 B5 t
    reg |= CFGCHIP2_PHY_PLLON;
( Y* _2 y; N! a0 \# T% L8 T+ ^" p  F# f( m$ O( d
    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
2 H/ x$ p% O! m
7 i8 r, D& L& {7 \: A    while (!(HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) & CFGCHIP2_PHYCLKGD));
! G+ i8 }: R7 @- S% n- t* j
- C9 }7 N& d5 a2 e) F//#ifdef USB_MODE_FULLSPEED
2 f2 }6 ]" f# n. C    HWREGB(USB0_BASE + USB_O_POWER) &= 0xdf;
1 C* |, B3 R% }* D//#endif /* USB_MODE_HS_DISABLE  */1 X: l- N% ?) \$ U9 @' Y. [& k" U1 {

+ _0 G- t6 i6 Mtprintf("\r\n USB0_BASE + USB_O_POWER=0x%08x:\r\n", HWREG(USB0_BASE + USB_O_POWER));
  Z2 V+ x2 H6 e, q0 ^# d}
& t6 s, T8 g# ?9 t+ L0 s" B' e( [% {% l+ C

6 F# N# o- d. G5 P' b) m6 |  附件有我们的电路图:
* T+ H$ F. @% O/ Z/ v  请问能否帮助分析,谢谢.3 C& x, x5 i# U
  h8 k+ ^$ D) J! j

! X+ Z" P6 ?9 h3 N* S! A, x' X5 m, G, c
7 [4 n- B  p1 b  k  f
# w# B  k+ \8 }! S( r7 E5 ^

5 k) L  u9 I" x# l, q' \" y  v, ^3 |/ ^: n' P: y- U

作者: quwenqi    时间: 2017-11-6 09:56
telephone num 13437388251




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4