嵌入式开发者社区

标题: usb 2.0 [打印本页]

作者: quwenqi    时间: 2017-11-6 09:54
标题: usb 2.0
你好:
# O- I: j' ]9 N5 I
5 T  u2 X! Y! [" o7 a" ^  我们公司在OMAPL138_StarterWare_1_10_04_01的基础上( OMAPL138_StarterWare_1_10_04_01\examples\evmOMAPL138\usb_dev_msc),
9 Q/ Q6 K' Z' p% o; }0 `8 L3 I- |3 J* j5 S" _5 Q; V3 y" C1 r- ?/ v4 f2 \
  实现了usb mass storage功能,在win7系统下面u盘功能够顺利实际,但是在电脑上接一个hub后,然后将u盘接到hub上,u盘不能正解识别。* f7 J, d! R/ A2 f0 V' h" a1 h+ ^, L

4 W9 u% ~% k* k3 u0 c+ I  目前分析代码发现经hub转接后,电脑发(SCSI_READ_10 0x28)这个命令,usb 复位。
( h% V* Q7 t) I1 v' _  Z7 n: j
; L9 W8 e9 F: p; O6 y% l  UsbPhyOn 代码如下,外部时钟配为19.2M. device mode:2 W& P6 R2 c( B3 T! t
" J# c: ]! o/ f8 e) i; L
  请问个和我们的设备电流是否有关:) h. ^+ C( T8 l7 y# S, L" g* ~
. C3 @0 }* y0 u  o
void UsbPhyOn(unsigned int ulIndex): F( m' P! e6 Z' o0 z( p2 w
{
. i, u) A0 g) e$ C# Z( A        . _, y1 e/ r, D  M/ F
   unsigned int  reg = 0;0 N$ f, Z6 D9 v& \9 I! E/ w
   BSP_KickUnlock();
! S/ |/ |, e5 O1 O" ~2 A        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
$ `  J) H2 O' o6 ~3 {6 ?# Z" Q        reg &= ~(CFGCHIP2_REFFREQ);
8 R5 E: l8 {- k$ I; N0 |$ B        reg |= CFGCHIP2_REFFREQ_19_2MHZ;
  i# i, }8 B+ {        //reg |=CFGCHIP2_REFFREQ_24MHZ;4 x  V4 ]. ~/ p0 `1 J1 N% w
        HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr)=reg;9 ^4 _+ D4 N4 ~! A' V5 Y  [
$ z! H* {& m8 n& V
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);* H0 f) [$ J1 U. `! W) ?! t: K
        tprintf("\r\n clk==0x%08x:\r\n", reg &= (CFGCHIP2_REFFREQ));
2 j5 X$ p9 v3 B- B* y# ]# B: t5 c/ W( L- r# y1 a% J! ?
#if debug) ~" r: h$ c, p9 U& |# o. u
/***internal 2.0***/ //aux_clk# ^, |& ~+ v* b" E! F) q  F
" }: o4 g" [# a9 |7 |; l9 d
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
' f' ~$ n6 j' D7 [    reg &= ~(CFGCHIP2_USB2PHYCLKMUX);
6 S6 H6 W. q. L: D2 I2 y    reg |= (CFGCHIP2_USB2PHYCLKMUX);1 p) e& \/ \" ?- \. y0 u) {
    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;' x9 t+ m% l2 s( p* q2 V$ h7 I, w) x
9 c, o* r9 A1 Q5 R" Y
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);6 C) ^, @9 e" I
    tprintf("\r\n 2.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB2PHYCLKMUX));1 H3 ^! F. N5 T7 x
+ A6 `: I' ^2 ^$ D6 n$ I& H- Q8 N
/***internal 1.0***/ ///phy out
3 c' h2 H% r7 Q# c) k6 @( n/ n2 g% s" O
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
& B/ o& ]- `/ J5 }    reg &= ~(CFGCHIP2_USB1PHYCLKMUX);
9 Y$ o* B& R& I1 T0 f    //reg |= (CFGCHIP2_USB1PHYCLKMUX);
" M$ f& S9 f% C    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
$ A! a# W* B+ b6 F( V" _7 Q3 s# b9 ?& g) _- \& o$ j
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);4 R0 `& s$ q: D2 o+ D- J% t# p
    tprintf("\r\n 1.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB1PHYCLKMUX));
. F$ K0 U7 j# ?
( X' g% X6 Z/ E% [4 u5 b9 F- n4 @. q2 y
% ]& g9 s; z1 m4 \4 v/***phy run***/ //phy out' s/ `" ~8 f! ~$ H) m
0 n) {9 ?) U. O8 C; @' q
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);* _+ B' P, y$ w
        //tprintf("\r\n CFGCHIP2_PHYPWRDN=0x%08x:\r\n", reg &= (CFGCHIP2_PHYPWRDN));
; z1 ~' c7 g6 i, Q. q4 I: s: I2 m9 q
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
: y! J9 D  y0 \1 v' A0 b8 i$ ?        reg &= ~(CFGCHIP2_VBDTCTEN);3 U" y* b5 N& L% u' X
        reg |= (CFGCHIP2_VBDTCTEN);
) g  v! z" r$ N3 p8 G# u" l        tprintf("\r\n phy CFGCHIP2_VBDTCTEN=0x%08x:\r\n", reg &= (CFGCHIP2_VBDTCTEN));% y2 @3 M  e: \( R& m0 i1 k3 f: _! m0 A
#endif% G; n: N& B/ E7 C  m( j# a7 b
! ]9 }% s5 V  I: g6 f2 ]( X- `
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
/ Q. S* }/ _: V2 z    reg &= ~(CFGCHIP2_RESET | CFGCHIP2_PHYPWRDN | CFGCHIP2_OTGPWRDN);   3 C3 ~' a7 @9 s: E1 s/ L: Q  Q

8 B8 I3 Y/ K% w, u    reg |= CFGCHIP2_PHY_PLLON;. t5 ~. @0 t4 C. k5 s4 p: C7 V

) L7 h/ _' i) A& I    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;% O0 \+ C; E: \2 W/ q$ I
! p* P( D% _; N: h2 \" v0 Z
    while (!(HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) & CFGCHIP2_PHYCLKGD)); 8 c7 g% ~' H* n- @
' T+ m3 o: T" Z' y# F, m' S# x
//#ifdef USB_MODE_FULLSPEED- i( k7 n- f* K& O' e1 T
    HWREGB(USB0_BASE + USB_O_POWER) &= 0xdf;! ]& T6 v( `" Q# c) l6 _+ Y  }
//#endif /* USB_MODE_HS_DISABLE  */+ v/ C+ Z' U; G& p' k
" j- ~0 @6 s" j5 W2 D7 c
tprintf("\r\n USB0_BASE + USB_O_POWER=0x%08x:\r\n", HWREG(USB0_BASE + USB_O_POWER));% T1 z& k* z: c0 j( |5 X
}" o2 Y9 s+ T5 ^9 q8 K
8 Y; Z( V7 L# D# A. w9 D  ]6 ~
) [2 `& _. t8 `/ Y
  附件有我们的电路图:
& ?* J7 G/ v/ V- o$ ?9 T! B4 Z  请问能否帮助分析,谢谢.: d5 V; H: \! j3 e7 r! M
$ S$ B1 u; U5 Y$ G
0 i. h* s  ]  q; @& F
  D7 c% ^, w5 g" R% G
7 K# R* {* Z6 _" X* t

  K' Z0 V2 |# ?9 s
2 {: |; ~- P# I8 _0 q2 Y- q$ T
) @, U2 s- p0 J
作者: quwenqi    时间: 2017-11-6 09:56
telephone num 13437388251




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