嵌入式开发者社区

标题: usb 2.0 [打印本页]

作者: quwenqi    时间: 2017-11-6 09:54
标题: usb 2.0
你好:, v6 u" }) A1 R. E* x3 B  w

  G5 E/ e6 T6 g. o1 j  我们公司在OMAPL138_StarterWare_1_10_04_01的基础上( OMAPL138_StarterWare_1_10_04_01\examples\evmOMAPL138\usb_dev_msc),2 [' P% I, I) u1 f3 _1 Q* f8 m  T
' p2 E! F4 e1 b( p$ [+ }
  实现了usb mass storage功能,在win7系统下面u盘功能够顺利实际,但是在电脑上接一个hub后,然后将u盘接到hub上,u盘不能正解识别。: _- ~7 M5 S+ |1 _- N% T
! {$ F  \7 N, l( N9 s, s4 C
  目前分析代码发现经hub转接后,电脑发(SCSI_READ_10 0x28)这个命令,usb 复位。' B4 L" }3 _) t. \) F
. n9 A. y4 u6 N" y0 E
  UsbPhyOn 代码如下,外部时钟配为19.2M. device mode:# K7 o! l: ~9 |& y7 ?2 e7 r2 n9 {

) D0 ?9 Y1 v0 c" K  请问个和我们的设备电流是否有关:( F7 o% a$ [9 }% M

% E7 r" L- A* T1 Ivoid UsbPhyOn(unsigned int ulIndex)+ a+ W* ?6 W+ f: @4 t5 X  `
{
6 U7 D8 K* [! m- Y1 O( n4 @2 m        + k* `+ ^; g/ I: Z3 \1 d
   unsigned int  reg = 0;
; N( T* Z, h- V+ @4 M! r9 h4 t4 F   BSP_KickUnlock();
& E4 l& L) t2 i; W0 G( v+ Z$ r        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
3 v- {$ s7 x4 Q! \' L0 a1 L1 a+ W        reg &= ~(CFGCHIP2_REFFREQ);0 N8 s# R- i& H$ M, p. f# @  P
        reg |= CFGCHIP2_REFFREQ_19_2MHZ;: M: Q+ g7 w5 M
        //reg |=CFGCHIP2_REFFREQ_24MHZ;& w+ V$ Q  n) O( L  f8 G
        HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr)=reg;, ]# o% @4 l  x2 n- S
+ O4 G& ]/ C( j* }  [
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);% B4 c% @3 ?- c! y; l4 O
        tprintf("\r\n clk==0x%08x:\r\n", reg &= (CFGCHIP2_REFFREQ));
" Q, i! j4 }: y. ^
. m0 q2 o! R* O  L. j$ {* z#if debug3 A" p2 C, }) B3 m8 X" P
/***internal 2.0***/ //aux_clk8 R8 D& z1 _: \) Y; R
1 D5 n" V, a4 K2 ~' R
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
9 v, }. T6 G7 W: L    reg &= ~(CFGCHIP2_USB2PHYCLKMUX);
5 v) \) K$ g+ @    reg |= (CFGCHIP2_USB2PHYCLKMUX);
0 Y. R) J" r0 k9 x* J; N: G, j8 m    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
$ m4 j) |/ e! Y/ Q8 @3 K% ?0 R8 e* \% T
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
% {! U, S3 J) ?0 h6 V  o    tprintf("\r\n 2.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB2PHYCLKMUX));. X6 S. x& o& Q% B

; m9 O( v2 K5 a2 ~/***internal 1.0***/ ///phy out
1 s! `1 [2 P9 @1 m2 N9 T  D! w6 @: ~& P) c* \
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);" r3 j/ I, {/ a, J' y
    reg &= ~(CFGCHIP2_USB1PHYCLKMUX);
3 M" o( h8 [' I    //reg |= (CFGCHIP2_USB1PHYCLKMUX);
1 c# O* |9 o. S0 e$ _) R- M    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
% D; h$ V7 C1 s; W& F
- n' Z! v; `  S    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);, b0 P9 p) V) Z( L7 w- A) `  Z
    tprintf("\r\n 1.0clk source=0x%08x:\r\n", reg &= (CFGCHIP2_USB1PHYCLKMUX));* |, r- G+ N, t
8 O" J0 l6 A  e+ v6 V
: H4 ^3 }7 T+ R/ {# {. C6 i- d
/***phy run***/ //phy out0 \8 k. {1 N# f* I' W
' r2 M: p4 H/ c4 ~+ `
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);) n* J# P7 i$ Z5 d# J5 s* \; \
        //tprintf("\r\n CFGCHIP2_PHYPWRDN=0x%08x:\r\n", reg &= (CFGCHIP2_PHYPWRDN));% J+ m. D* v' ~9 a. w
: \* \3 N1 S) t
        reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr);
, h$ G: o& T& l- E9 p' E        reg &= ~(CFGCHIP2_VBDTCTEN);
- W7 y$ g8 A. z/ k# j5 P        reg |= (CFGCHIP2_VBDTCTEN);; i3 s  s8 S% Y& C; ?: N
        tprintf("\r\n phy CFGCHIP2_VBDTCTEN=0x%08x:\r\n", reg &= (CFGCHIP2_VBDTCTEN));8 L9 b) a, M* t4 C9 |$ q% S. F
#endif) A* ~; `5 V) n6 h$ E, S
* U4 X. @# p  H6 R
    reg = HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr); & Z+ V3 D- N$ T6 P1 H
    reg &= ~(CFGCHIP2_RESET | CFGCHIP2_PHYPWRDN | CFGCHIP2_OTGPWRDN);   
4 i7 ^1 p  O' W7 l6 P6 A
+ o0 g5 {  t( u! w5 {: Q; e& I    reg |= CFGCHIP2_PHY_PLLON;' o+ X# r( w) f5 \
5 A6 x6 v( ^8 d& z
    HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) = reg;
& e; l7 _+ F$ D8 G* k/ W; L! H1 S1 U0 u0 j3 W
    while (!(HWREG(g_USBInstance[ulIndex].uiPHYConfigRegAddr) & CFGCHIP2_PHYCLKGD));
- h1 [$ `1 u2 N3 ?
- M4 M# p8 _/ c5 W//#ifdef USB_MODE_FULLSPEED/ k8 W1 Y' J& {' b+ w6 b" k
    HWREGB(USB0_BASE + USB_O_POWER) &= 0xdf;! a/ A2 X; H9 B  K3 G: p+ N
//#endif /* USB_MODE_HS_DISABLE  */: ~& u8 k! N6 p
( A# g& A- E+ G" i0 z- `( C& o
tprintf("\r\n USB0_BASE + USB_O_POWER=0x%08x:\r\n", HWREG(USB0_BASE + USB_O_POWER));
( Z5 z" n3 [0 l8 P5 `) |}
: m  T" m. S* S! i' @( O. Q6 q8 I0 j( j, k) G5 K

) G3 B: S  U% f. `! o  附件有我们的电路图:: `) ]# Q9 D5 |" \; E' s
  请问能否帮助分析,谢谢.
: o/ O) x1 x+ N$ q+ d+ D+ B" Z7 a* c/ i6 W+ E* B4 D* H

# \7 i* T% A4 }) n, J- f& W  k# L' P' K, Z
, }0 W  `4 B- |5 O1 n8 ]1 G

& p. o  s2 C6 c: z: _! u% K6 T+ C! {4 Q
, L+ O1 c2 b) F% {- E& Q
/ \+ W$ p4 b9 f: B3 l" }
作者: quwenqi    时间: 2017-11-6 09:56
telephone num 13437388251




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