嵌入式开发者社区

标题: usb 2.0 [打印本页]

作者: quwenqi    时间: 2017-11-6 09:54
标题: usb 2.0
你好:: Q% H- _! C9 a2 I
1 c+ q5 h& f5 y5 k8 \
  我们公司在OMAPL138_StarterWare_1_10_04_01的基础上( OMAPL138_StarterWare_1_10_04_01\examples\evmOMAPL138\usb_dev_msc),
/ }) C( D0 s# a9 R/ |/ F7 B0 u# O7 A+ ?2 H' }7 v+ ?2 _
  实现了usb mass storage功能,在win7系统下面u盘功能够顺利实际,但是在电脑上接一个hub后,然后将u盘接到hub上,u盘不能正解识别。# R) X' j7 @" d0 A$ t

. a" a& F" x5 C6 p/ R  目前分析代码发现经hub转接后,电脑发(SCSI_READ_10 0x28)这个命令,usb 复位。
  y" n9 \0 \% d$ ?+ ~$ ]' M9 {& ^8 x( G/ b, y+ {) Z
  UsbPhyOn 代码如下,外部时钟配为19.2M. device mode:. J1 |3 n5 [3 L. ?. W9 I

8 i% J$ m' P+ m' B/ h5 y; K" S+ ]  请问个和我们的设备电流是否有关:
/ d! O1 P; S# j+ Z/ H+ m" T
0 s4 F2 k& {- \/ `# f) Xvoid UsbPhyOn(unsigned int ulIndex)
+ C! L! ~2 F) a$ Y( B{1 R0 l" ^- q8 |4 ~+ d+ [0 `
          T' \6 f; A6 K" X4 T' n/ L+ J5 W
   unsigned int  reg = 0;
/ n/ E/ c' J! w4 Y9 l$ Q, b9 C   BSP_KickUnlock();
! e. F" t/ |" Z0 |8 w5 b/ N1 W        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
, H9 q& Z% L; X4 Q' o' e        reg &= ~(CFGCHIP2_REFFREQ);
# g( G) R2 v' ~5 \        reg |= CFGCHIP2_REFFREQ_19_2MHZ;: M2 X' p3 A; A! V
        //reg |=CFGCHIP2_REFFREQ_24MHZ;
+ |. d3 W7 v8 h+ F3 B4 A2 s% }        HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr)=reg;
1 L, _4 B% E% n3 Y4 X, T( Y' G7 f" r4 B1 T- t! {8 ^0 L- r
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);$ x7 O; t0 z3 e' M; i
        tprintf("\r\n clk==0x%08x:\r\n", reg &= (CFGCHIP2_REFFREQ));
9 r- k$ U, v  m$ {/ n) F& f
; I- e4 e: b: U8 J9 {#if debug
9 L* G* m2 R6 n' Q/***internal 2.0***/ //aux_clk
% n( `* D; M$ @* Y  D( a; u2 n/ g& r' E8 @$ K. I  D
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
# H/ p+ A" X4 @7 N1 x! A    reg &= ~(CFGCHIP2_USB2PHYCLKMUX);3 _" [4 K- }) L7 E9 _2 y7 W# d7 B
    reg |= (CFGCHIP2_USB2PHYCLKMUX);
0 J0 |+ Y& ^1 X( k- ]    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;4 a( K' t6 W% c- |: x9 |
  A: _1 C6 h) K. J  O. g" ?
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);) n$ Q8 E9 l9 d2 M2 S9 ]/ U. n# {
    tprintf("\r\n 2.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB2PHYCLKMUX));  ^; g6 t" J* e
7 P5 _; \1 j/ r+ A9 `% l, S
/***internal 1.0***/ ///phy out
+ X7 @4 J' |$ {6 y9 U9 `* V5 y1 X4 O  z/ k* O  ]! Y5 o$ K
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
% X  C$ H4 e1 g    reg &= ~(CFGCHIP2_USB1PHYCLKMUX);0 {/ `+ T) }& G5 h' g
    //reg |= (CFGCHIP2_USB1PHYCLKMUX);9 t4 A% d4 ?$ b2 u& D* p2 k! O
    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
6 ?( F: p) K, z# v' e: M& P  C3 \4 O- u, O$ T6 o
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
& Y4 I5 R' @9 W    tprintf("\r\n 1.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB1PHYCLKMUX));
7 l' \7 l' m8 c  X7 }
, x5 ^) h2 F$ C/ [" O/ t. _: A
/***phy run***/ //phy out
( d6 x( W2 S5 ~" p# J( G0 K( r4 H: I( Q$ g! Q
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);5 N8 f5 D, D6 D* p0 J
        //tprintf("\r\n CFGCHIP2_PHYPWRDN=0x%08x:\r\n", reg &= (CFGCHIP2_PHYPWRDN));# d! @; o7 i; S+ M8 G
) d7 _1 M7 U  F4 L4 c# T2 u
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
9 t6 Q  ~$ Q* u" N& d# K2 T$ B        reg &= ~(CFGCHIP2_VBDTCTEN);
9 [# M: u5 a8 l, c        reg |= (CFGCHIP2_VBDTCTEN);/ d4 z0 E7 R9 [1 G6 b) R! p! c
        tprintf("\r\n phy CFGCHIP2_VBDTCTEN=0x%08x:\r\n", reg &= (CFGCHIP2_VBDTCTEN));
7 \( q$ q! _: ]2 Y#endif* X% P7 u. z  U! l( i- O

0 X! Q7 _; N% G1 v9 e* h    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr); 5 L4 M5 S) P$ N, h! H. `
    reg &= ~(CFGCHIP2_RESET | CFGCHIP2_PHYPWRDN | CFGCHIP2_OTGPWRDN);   
( e) V$ o8 y0 A" T# Y1 U4 [8 s8 S
) U$ |' F+ o6 A) g5 k    reg |= CFGCHIP2_PHY_PLLON;/ J; a. Z( Z' U- `5 Q

/ {* R$ [9 Z3 Y    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;" g. Y% @/ `4 ?7 W5 Q5 g
+ [1 h6 }0 m! U  r9 B5 }; T
    while (!(HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) & CFGCHIP2_PHYCLKGD));
3 O) q+ ~" i' J- J& Q+ B( t& d6 F1 \/ F: @: E6 U) e3 ~, l5 q" t4 j
//#ifdef USB_MODE_FULLSPEED9 N* M2 p5 b  U
    HWREGB(USB0_BASE + USB_O_POWER) &= 0xdf;
8 E3 @2 u7 v- C: A9 P% j8 o//#endif /* USB_MODE_HS_DISABLE  */$ k$ p( @& ~' {4 H
* F$ ^7 `3 @* n1 }1 d
tprintf("\r\n USB0_BASE + USB_O_POWER=0x%08x:\r\n", HWREG(USB0_BASE + USB_O_POWER));
2 R6 @1 `  R4 X, Q3 }. _}
  {/ z2 B: I7 h: D; X
+ X; A# o+ S. g. l1 Z
5 T  N" V* S. r4 s* d1 x9 c  附件有我们的电路图:# T: n8 ~# z' N1 O1 |. i8 t
  请问能否帮助分析,谢谢., }: U: C- Y: z

6 u& b, |- {/ r: n: w, g2 [0 Q: n

( O( ]& C' y- Q7 J! K. P4 B9 S+ o5 W* W2 r$ k

. U, Y5 B) P+ B9 ^/ q( z9 d& J6 a1 r( G7 `% b, m, b

3 f" C2 p8 L( t. u) v( w
作者: quwenqi    时间: 2017-11-6 09:56
telephone num 13437388251




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