嵌入式开发者社区

标题: usb 2.0 [打印本页]

作者: quwenqi    时间: 2017-11-6 09:54
标题: usb 2.0
你好:$ E6 s6 ?; T7 h, D
6 J5 c2 Q3 h$ K& {) O
  我们公司在OMAPL138_StarterWare_1_10_04_01的基础上( OMAPL138_StarterWare_1_10_04_01\examples\evmOMAPL138\usb_dev_msc),3 U* R: ~3 X9 _  b! ^, D( M  J

0 F" d. l, b) s( J8 y  实现了usb mass storage功能,在win7系统下面u盘功能够顺利实际,但是在电脑上接一个hub后,然后将u盘接到hub上,u盘不能正解识别。0 P8 g, u* P( ^
8 N6 U5 Z! y: T
  目前分析代码发现经hub转接后,电脑发(SCSI_READ_10 0x28)这个命令,usb 复位。
+ \7 P1 c. @( W8 G# X7 j$ I  h, B+ j6 ^; _9 C5 P* k) A$ X: c3 K: }
  UsbPhyOn 代码如下,外部时钟配为19.2M. device mode:$ m  d/ d$ w5 ~

; p) Q" J& D1 Y  请问个和我们的设备电流是否有关:
3 k: L: j7 _" h" ?3 r" R; j* J1 F3 B+ w. c, B( N1 [0 ?- W; A
void UsbPhyOn(unsigned int ulIndex)( V) x* X$ ~* m) P  e- s1 l
{
4 r& {8 |- j8 Q3 E" D/ o       
0 E  q7 J- T0 ^% d. {, ^   unsigned int  reg = 0;
$ v! B& ]6 ~3 {/ a7 L1 _   BSP_KickUnlock();
) \9 N+ }7 r6 C& e+ T5 T6 S0 I        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);) p9 S, f' _' ~
        reg &= ~(CFGCHIP2_REFFREQ);6 T4 }7 i& Z( _  a8 m
        reg |= CFGCHIP2_REFFREQ_19_2MHZ;' v& T; S( z4 ]2 B3 Z- C1 u
        //reg |=CFGCHIP2_REFFREQ_24MHZ;
4 ?# p, e9 U, v9 P( u& b8 t        HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr)=reg;& D+ N/ e3 @, y: Q

/ V( [" B. |4 B* j8 N6 u' }$ ^  P        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
! `0 f1 L1 ^6 \; S. B2 O: d        tprintf("\r\n clk==0x%08x:\r\n", reg &= (CFGCHIP2_REFFREQ));
# A, D1 ~) d9 v1 X1 y
. i1 n- a9 l! G" I5 y) K9 P#if debug
/ E$ L: N  w4 o0 ~& ^+ o8 T/***internal 2.0***/ //aux_clk# k- s; c, C( x) L) g
. x2 t4 e2 Y7 P' p
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);( }! A* }$ _) d" \! L
    reg &= ~(CFGCHIP2_USB2PHYCLKMUX);6 V& B0 e) E* r( w. v, _
    reg |= (CFGCHIP2_USB2PHYCLKMUX);
  x! p5 ~& S# E; L; X- K3 m    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
1 I& p- y3 |% S# w# g. ^2 o, \' z# c* O; p1 J7 ^8 `8 L
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);/ l( P0 ^& M( W+ v; X
    tprintf("\r\n 2.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB2PHYCLKMUX));: n6 y$ ~4 \8 p5 ?$ k" \( ^

# C9 ~& k, h& W" ]* g6 [/***internal 1.0***/ ///phy out8 S. |% Y6 V$ m( @  ^% n! H% B& r

9 F+ g% C" P8 _4 _! Z5 d' x1 `    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
# n8 b# y7 S7 U4 P7 m, L! ^! M1 i) @    reg &= ~(CFGCHIP2_USB1PHYCLKMUX);
. ^8 c' J* r) O    //reg |= (CFGCHIP2_USB1PHYCLKMUX);
4 ?2 ~6 z# E7 S& ~  E8 @8 I, b( ^    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;) Q6 ?% ]* `  z3 F8 h  ^
/ V; I5 e, x, b, I
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);3 Y+ H7 p% F2 P& o* |6 h5 c
    tprintf("\r\n 1.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB1PHYCLKMUX));
& I3 q! e* i9 Z( G6 ?
) Y8 U) N# g1 E9 u& F
8 p, U; ^& }' v4 B" b* o/***phy run***/ //phy out  k. N/ C+ H+ H9 s9 k
6 _$ H3 ^# n5 w
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);" Y% t# p* s: L
        //tprintf("\r\n CFGCHIP2_PHYPWRDN=0x%08x:\r\n", reg &= (CFGCHIP2_PHYPWRDN));9 S( [8 u- ^) {4 t3 h" d

: }; `) P/ m* B! H5 ~! B        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
. W: j4 t  K: w0 A& F3 l! Q        reg &= ~(CFGCHIP2_VBDTCTEN);
1 f# m( u! b2 X        reg |= (CFGCHIP2_VBDTCTEN);
% G. z) a9 X' b' i! U0 g$ p        tprintf("\r\n phy CFGCHIP2_VBDTCTEN=0x%08x:\r\n", reg &= (CFGCHIP2_VBDTCTEN));
/ T. H4 i3 W2 r" n+ Y#endif/ _: o4 N* r1 T' C. s) u, J3 |

: B+ g" d4 a) v9 g5 ^& Q4 e# F    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
6 B  P& h6 }$ _    reg &= ~(CFGCHIP2_RESET | CFGCHIP2_PHYPWRDN | CFGCHIP2_OTGPWRDN);   0 b2 v( }# n  N$ G

! b& F/ o' @  S6 ?/ U    reg |= CFGCHIP2_PHY_PLLON;
2 }& X/ ^1 V; a7 d- P8 W8 B2 ]
6 O7 R- E* ~+ Z8 i8 t    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;$ ~4 {8 O. c* D) p. f8 P

" R& l* |7 l* @6 j+ {/ o+ w3 f% D    while (!(HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) & CFGCHIP2_PHYCLKGD));
" x( u% {" U' z7 H+ E/ R  S
9 l+ h' h) W8 l//#ifdef USB_MODE_FULLSPEED
3 K5 r3 P; A" i3 [" x, @! @/ U% Q    HWREGB(USB0_BASE + USB_O_POWER) &= 0xdf;4 l- c2 V0 n7 T+ K7 X+ l* H
//#endif /* USB_MODE_HS_DISABLE  */
; O* P7 x! I5 S& }
' K$ x/ [$ N7 N( Etprintf("\r\n USB0_BASE + USB_O_POWER=0x%08x:\r\n", HWREG(USB0_BASE + USB_O_POWER));8 O" [0 {. H! G: V; V+ r" c* f; U
}# w6 i$ @3 ?/ p

8 `/ j' n2 a) @# W7 c; M! f, D& A! b/ o+ Q
  附件有我们的电路图:
! V( ^( m9 ^, s7 \) }7 Q  请问能否帮助分析,谢谢.
+ J4 |; B. c$ c8 f! ?) Y! A
9 i5 e# h) s( O! X9 d9 y5 V
( E0 D. K: \/ a# U
/ B! d# K) \8 g
$ ^! y% S) z, f3 F! T) t( X
- r# Q$ ]" e- p) j
  b9 M  Z/ J2 j" U- [- W! E2 N3 p% G! m" y; H! N5 p. A8 l

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




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