关于USB的问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于USB的问题

[复制链接]

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
跳转到指定楼层
楼主
发表于 2016-12-1 09:25:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
     小弟最近做了5块板子,用的创龙的核心板,其中4块USB2.0 host都没有问题,只有一块老是周期性报如下错误:! o2 o* N, p7 p' U0 r
hub 2-0:1.0: over-current condition on port 1
: J2 v8 M" D8 m9 r: a4 ?8 V8 k5 |da8xx_musb_interrupt 538: VBUS error workaround (delay coming)4 o! j+ \; O; {3 w3 Y
我的电路图如附件,我用示波器测量过了,开始USB0_DRVVBUS脚起始是低电平,开机瞬间,它会变成高电平,USB0_VBUS也会: E5 j1 u* @/ A2 V
随着上升至5V,开机瞬间,USB0_VBUS并没有出现跌落至低于4.4V,从电路上没有发现问题,然后开始追踪linux3.3 USB驱动代码,! ^- V0 ^2 y9 p. S6 \
发现,在da8xx_musb_interrupt函数中,有如下代码:: T6 ]5 ]2 l! \/ Z, r
if (status & (DA8XX_INTR_DRVVBUS << DA8XX_INTR_USB_SHIFT)) {
! L/ o" y4 R* z2 D' K                int drvvbus = musb_readl(reg_base, DA8XX_USB_STAT_REG);' C# I: j" [. H4 k; p% Y
                void __iomem *mregs = musb->mregs;2 b  n9 }% T) ~9 f% l+ u: ]  I
                u8 devctl = musb_readb(mregs, MUSB_DEVCTL);# h+ e  R# C% F- [1 }
                int err;
% `! b9 |: ]) k; c8 n# u) F
# }% _* N7 U- f" A                err = is_host_enabled(musb) && (musb->int_usb &
7 ?) w% ^9 y$ l  e: k, y                                                MUSB_INTR_VBUSERROR);4 f( X$ Z2 t2 x$ u3 Y( J, u
                if (err) {9 y2 L' `* u8 `  t$ Z+ D; ]
                        /*
- R9 ^% B( k1 }" P9 V2 \9 e* m: K) o( A                         * The Mentor core doesn't debounce VBUS as needed, J" R* I9 n' D6 h6 g- S
                         * 。。。
5 W; T, d; S0 o0 J0 E                         */5 _0 Y8 C* [0 K$ Y( P7 G  b
                        musb->int_usb &= ~MUSB_INTR_VBUSERROR;( T. S8 p' C( w  z2 M" l
                        musb->xceiv->state = OTG_STATE_A_WAIT_VFALL;
# r. x) m( H2 j# @& B$ L                        mod_timer(&otg_workaround, jiffies + POLL_SECONDS * HZ);+ V( C! y; a" ]
                        WARNING("VBUS error workaround (delay coming)\n");$ k4 o& e2 h2 f6 B' Z
                }
$ K$ Y4 `, I* B: x. }' _4 {
0 T5 H) |6 Z/ ~4 d- L一直发生MUSB_INTR_VBUSERROR错误,然后会启动定时器,周期调用otg_timer函数,
, k9 E+ h5 R1 a' P1 q' e8 @: I跳入如下分支:
" U  F% ~% f2 I/ J+ v8 k: ]7 Fdevctl = musb_readb(mregs, MUSB_DEVCTL);
8 v" J6 v" ^7 ?。。。6 S3 a  F" Q& b* H% V6 }" t) O" X
case OTG_STATE_A_WAIT_VFALL:
; t1 ~6 U& B: ?0 Z+ @                /*
9 U! p$ V7 K6 b& _8 x! r                 * Wait till VBUS falls below SessionEnd (~0.2 V); the 1.3
, m' i3 O( n/ X' |2 E7 o! j                 * RTL seems to mis-handle session "start" otherwise (or in6 q( ~$ Q+ d. I3 e
                 * our case "recover"), in routine "VBUS was valid by the time) E+ O" Y/ n: E* Q# M1 {- O$ I
                 * VBUSERR got reported during enumeration" cases.% f0 W1 L. r# @! s! u! L
                 */  B# k/ g+ ?9 G* s& F) ~3 t' H
                if (devctl & MUSB_DEVCTL_VBUS) {
. p5 Y: e8 F6 D- g3 d8 }8 s                        mod_timer(&otg_workaround, jiffies + POLL_SECONDS * HZ);
5 M# Z3 b) Z% {% p% y8 f3 j                        break;
* J1 J' i' y. f& p8 |$ L                }& ]+ D8 z$ u- }: T
                musb->xceiv->state = OTG_STATE_A_WAIT_VRISE;9 _. A! L: h; D4 J% x1 A
                musb_writel(musb->ctrl_base, DA8XX_USB_INTR_SRC_SET_REG,
! _$ W( X1 R( l6 y7 G) E                            MUSB_INTR_VBUSERROR << DA8XX_INTR_USB_SHIFT);* ^& o5 T: }2 D/ R
                break;
5 ^! E* R/ Z2 |/ U0 U& }' b" P/ a9 U0 _; P0 C
其中,devctl是设备控制寄存器,我打印了它的直,是0x80, 也就是位7是1,代表着是B device,,明明是A类,
; c1 f+ _3 _6 u- s7 D6 \不知道为啥自动变成B类了。而且VBUS一直是5V,正常的啊,可是驱动也无法修复。。
! g: O) I& h; ]& D5 v" w/ x( P        不知道亲们有没有遇到类似的情况,是怎么解决的?. U0 r  x* f: }/ d& C

本帖子中包含更多资源

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

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

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-3 11:22 , Processed in 0.045750 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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