关于USB的问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4894|回复: 1
打印 上一主题 下一主题

关于USB的问题

[复制链接]

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
跳转到指定楼层
楼主
发表于 2016-12-1 09:25:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     小弟最近做了5块板子,用的创龙的核心板,其中4块USB2.0 host都没有问题,只有一块老是周期性报如下错误:
4 b4 G" R8 G0 ^7 U6 A( thub 2-0:1.0: over-current condition on port 1$ {/ a- |3 t& M9 \9 k
da8xx_musb_interrupt 538: VBUS error workaround (delay coming)
" v- G' K0 _- e+ `. b% t我的电路图如附件,我用示波器测量过了,开始USB0_DRVVBUS脚起始是低电平,开机瞬间,它会变成高电平,USB0_VBUS也会- y& }3 L5 Z* I# G% }" Y  C, R6 h
随着上升至5V,开机瞬间,USB0_VBUS并没有出现跌落至低于4.4V,从电路上没有发现问题,然后开始追踪linux3.3 USB驱动代码," P8 b6 b7 Q( C7 r, h% y
发现,在da8xx_musb_interrupt函数中,有如下代码:3 E5 c; K1 ]' H# O2 B3 e8 o
if (status & (DA8XX_INTR_DRVVBUS << DA8XX_INTR_USB_SHIFT)) {
5 I( I4 u$ W+ I/ x  P( k                int drvvbus = musb_readl(reg_base, DA8XX_USB_STAT_REG);
) Q! m+ J. z3 k- N# X+ l7 M' X                void __iomem *mregs = musb->mregs;
; e# H' }+ U; A3 G2 v* i                u8 devctl = musb_readb(mregs, MUSB_DEVCTL);
' \! b) g4 u: R; p& s( B9 s. x" F7 J                int err;0 D, J/ o1 b: B9 P0 |2 ?, e( K. n
! X# w/ F( _5 f. [3 d
                err = is_host_enabled(musb) && (musb->int_usb &- V0 N0 t- o6 w, p. Y8 f3 G
                                                MUSB_INTR_VBUSERROR);$ L! r4 o- w$ o- P( i% U
                if (err) {$ W) ^9 r2 V7 g* u2 Y
                        /*
, p; h& z) D( ~/ @                         * The Mentor core doesn't debounce VBUS as needed
0 M( N, ]3 n" R0 u: _, O/ H                         * 。。。
5 L; g6 y7 b! A! P0 i: w- |1 ?& |                         */
( H2 y9 S% n5 W: D$ x' s" ?/ d                        musb->int_usb &= ~MUSB_INTR_VBUSERROR;3 i6 c. y! }( G& k: i
                        musb->xceiv->state = OTG_STATE_A_WAIT_VFALL;& |& q6 V& B/ N5 W7 ~
                        mod_timer(&otg_workaround, jiffies + POLL_SECONDS * HZ);0 A% `( f1 `  ^2 J
                        WARNING("VBUS error workaround (delay coming)\n");2 ?- S7 a/ `& ^# d
                }
" c- I3 v( @  O! w) A" q* Y
8 O- B6 ~+ J: V一直发生MUSB_INTR_VBUSERROR错误,然后会启动定时器,周期调用otg_timer函数,3 S* c7 Z1 {$ v1 _) t/ t
跳入如下分支:( q: |! D' A1 @
devctl = musb_readb(mregs, MUSB_DEVCTL);4 G7 L; R$ p  V8 y' F2 q& o5 ]
。。。( f6 h, m/ }" d# f* Z4 i3 W/ M6 ^# w
case OTG_STATE_A_WAIT_VFALL:
$ ~4 e( s" k9 d, u: N* E6 k, ^9 K                /*6 {* T+ C+ w) j" k/ n+ ^% ]
                 * Wait till VBUS falls below SessionEnd (~0.2 V); the 1.3
) u) g( E7 J$ ]# R/ P: a                 * RTL seems to mis-handle session "start" otherwise (or in
2 s# s- B; L% K3 F4 W  r3 y                 * our case "recover"), in routine "VBUS was valid by the time
1 W' f4 [9 D3 e) @* o3 J# {                 * VBUSERR got reported during enumeration" cases.
" Q# G, v4 f+ s0 |: |; ^                 */
" i. U2 O% z6 r- c% Y7 W  n* c6 e                if (devctl & MUSB_DEVCTL_VBUS) {9 u1 K* W1 U" b8 \/ ~  G% h
                        mod_timer(&otg_workaround, jiffies + POLL_SECONDS * HZ);! \- ^, j- ]* C7 k0 {
                        break;( f6 `- |; H) ]  x. V
                }) |6 H+ e4 \& D& L- T# @7 I0 ^5 x
                musb->xceiv->state = OTG_STATE_A_WAIT_VRISE;
3 O: [: m& M8 V. A- N4 g% @3 {                musb_writel(musb->ctrl_base, DA8XX_USB_INTR_SRC_SET_REG,
0 ^! ?# {4 d' P                            MUSB_INTR_VBUSERROR << DA8XX_INTR_USB_SHIFT);* K! D2 {* r# E% `, w$ `1 z
                break;
) S9 ?: ?! b5 u1 \9 ]: h$ R+ i# k" @1 w5 T4 J& I
其中,devctl是设备控制寄存器,我打印了它的直,是0x80, 也就是位7是1,代表着是B device,,明明是A类,
* F. a* k5 r8 ]4 q, y! k不知道为啥自动变成B类了。而且VBUS一直是5V,正常的啊,可是驱动也无法修复。。
/ e' ^: w& W9 E  p        不知道亲们有没有遇到类似的情况,是怎么解决的?  `" N6 y6 p+ N1 O" V4 P) f

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
沙发
发表于 2016-12-1 22:01:12 | 只看该作者
如果4块正常的话,那驱动应该是没问题的,多半是硬件的问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

点击跳转“创龙科技服务通”

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2026-3-17 09:32 , Processed in 0.043347 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表