嵌入式开发者社区

标题: usb 2.0 [打印本页]

作者: quwenqi    时间: 2017-11-6 09:54
标题: usb 2.0
你好:
9 _4 K" e& w. y% F- W$ P
% x& d0 i. f. ]+ z& Q5 ?. F& i  我们公司在OMAPL138_StarterWare_1_10_04_01的基础上( OMAPL138_StarterWare_1_10_04_01\examples\evmOMAPL138\usb_dev_msc),
, H) p( Q( |0 L/ Z2 O; S7 k+ z% e9 K- K' c
  实现了usb mass storage功能,在win7系统下面u盘功能够顺利实际,但是在电脑上接一个hub后,然后将u盘接到hub上,u盘不能正解识别。
. q- ]4 L( i  `2 i1 [- V- j, ^4 o5 q8 V, w- t, ]8 L8 Z) B. O8 \- W
  目前分析代码发现经hub转接后,电脑发(SCSI_READ_10 0x28)这个命令,usb 复位。
* A1 e& D7 w& i- C# U" C" k  w& I1 j; d' r3 A; }+ I- y' `" w. q
  UsbPhyOn 代码如下,外部时钟配为19.2M. device mode:
( |6 w1 X: l3 y5 w% Q; U3 q
7 Y4 i" W4 T' m8 I$ x( c  请问个和我们的设备电流是否有关:
0 g0 O# {* f+ C. m! H& x1 i$ n# J
void UsbPhyOn(unsigned int ulIndex)
+ v; l6 x( N( f7 i' C6 ?5 {{" S5 \8 E2 b' W: [" R
        1 }3 V4 m1 v7 _6 l( p# C  t1 z
   unsigned int  reg = 0;
6 K  H( p- e# L9 [1 Y0 W   BSP_KickUnlock();; X, n+ C1 H5 M
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);% \* C5 b  p5 ]0 T2 _" P
        reg &= ~(CFGCHIP2_REFFREQ);
! ?: f7 |; K  i1 ^/ O1 l. F& Q+ H        reg |= CFGCHIP2_REFFREQ_19_2MHZ;
7 Z, T5 W% D6 @: M3 |        //reg |=CFGCHIP2_REFFREQ_24MHZ;
8 {$ R' |0 |9 R        HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr)=reg;
1 i) C- X' E3 d
7 U, d$ `3 b* P/ H. V1 H/ c        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);) u; @9 u4 O* \; x. @# {
        tprintf("\r\n clk==0x%08x:\r\n", reg &= (CFGCHIP2_REFFREQ));/ ~8 J7 d! p) }" @1 ?$ z

( s5 e! @. a- {1 Y! y7 O#if debug
1 a3 F" _0 }& l& g6 e' D/***internal 2.0***/ //aux_clk
( b" [' g' A% `0 j- V/ _% }. N' j( j9 n; Q, Q0 e) ?
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);' I/ M4 n( _7 E: F% C. O
    reg &= ~(CFGCHIP2_USB2PHYCLKMUX);3 H0 [8 U, j! y. e+ f
    reg |= (CFGCHIP2_USB2PHYCLKMUX);& X2 k6 v6 [, w" G
    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
# X% c1 k8 j# A5 R0 ?8 q# g5 c1 b5 e* l) |
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);0 z1 b& H' h4 Z
    tprintf("\r\n 2.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB2PHYCLKMUX));
& L3 T% _( I+ K! t* }: k' k! }" O4 r9 z) |+ J
/***internal 1.0***/ ///phy out) p1 P; a6 W3 j! t

* n( }% s# A7 ^* I; E    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);( Q/ v+ f4 \2 ^( ^
    reg &= ~(CFGCHIP2_USB1PHYCLKMUX);
/ t8 s6 V% r, C1 A2 A" E" E6 C# n4 M    //reg |= (CFGCHIP2_USB1PHYCLKMUX);
( s5 \2 l, Y. y' n% I    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
; f8 u! ~6 A) W, E8 Y; k9 N. \3 @# Y* x# g
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);9 F- B/ P8 {! D
    tprintf("\r\n 1.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB1PHYCLKMUX));9 M5 `% g5 M; x! I) D: {  w
- v  J1 l$ z! E  f# `3 o9 b
" x% K, x3 Q. _, V. B
/***phy run***/ //phy out
5 ^4 E9 z) E0 L% d$ B7 h
6 Q2 B6 `; X$ W/ `( z+ J0 p+ H        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
4 N  j, C" F5 C        //tprintf("\r\n CFGCHIP2_PHYPWRDN=0x%08x:\r\n", reg &= (CFGCHIP2_PHYPWRDN));  a$ W/ f, U1 }/ p9 X1 h8 }
$ I0 {" y  D5 {- o7 j6 i& i
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
/ o3 E& N  W( S        reg &= ~(CFGCHIP2_VBDTCTEN);8 P8 i* D2 {! T# E. `* r
        reg |= (CFGCHIP2_VBDTCTEN);5 s: u, X& Y& ?, W
        tprintf("\r\n phy CFGCHIP2_VBDTCTEN=0x%08x:\r\n", reg &= (CFGCHIP2_VBDTCTEN));
" D. t* `. L8 L# k& Z2 h#endif& T, h2 P; p4 }( H0 C
  [/ y3 K7 `% z+ \
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
, J/ c3 @4 {' b. z; {& g1 [    reg &= ~(CFGCHIP2_RESET | CFGCHIP2_PHYPWRDN | CFGCHIP2_OTGPWRDN);   " M& F' B) p8 h( c6 S: t

* b# e% J& B! N  O( Q6 |* O+ u    reg |= CFGCHIP2_PHY_PLLON;5 M; U/ [# K% Q! ~: V" O

  Z$ o% B2 e, v1 s- e$ e    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;# |* U( v; Z( I2 Q$ d& i7 M/ j
) P5 I8 E1 O$ b7 b$ ]
    while (!(HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) & CFGCHIP2_PHYCLKGD)); 5 w. i; W. v. G- J0 G

  o0 F2 \: e; s9 Y$ O//#ifdef USB_MODE_FULLSPEED5 ?6 J* W2 l( F( \. P) Y
    HWREGB(USB0_BASE + USB_O_POWER) &= 0xdf;
# M' v' ?# H: G( Q5 }# |% ^5 s//#endif /* USB_MODE_HS_DISABLE  *// X" O: |' P5 a. ~% ?) C
( O# w$ Y( o6 y% g
tprintf("\r\n USB0_BASE + USB_O_POWER=0x%08x:\r\n", HWREG(USB0_BASE + USB_O_POWER));* r" F) S. G: P' Q3 \6 W  W
}" H& ^* H2 ]& H& D- N

6 @. c; P) N! ?4 Q7 O
, n! _* d, R& x. }  附件有我们的电路图:0 j7 b/ {# n( I- A7 Y
  请问能否帮助分析,谢谢.
; V8 j  }- v8 F
" Z! }; l& F1 J. u- ^; T1 u2 F$ m9 g- k. c/ \/ x9 y- o: `7 u
& g/ |+ j  W0 ^! h0 u( u. j8 H
5 v5 R) m* D+ Y! ~

9 {* o3 K  g, E, ]  [
& J! @0 I; G/ t5 J, f1 ^. O% a8 O) F, k8 f- \' b

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




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