嵌入式开发者社区
标题:
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* j
5 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) k
6 @( 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 Q
3 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