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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于USB的问题

[复制链接]

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
跳转到指定楼层
楼主
发表于 2016-12-1 09:25:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     小弟最近做了5块板子,用的创龙的核心板,其中4块USB2.0 host都没有问题,只有一块老是周期性报如下错误:
8 V' K  {! t$ ~. C6 F3 d" z- xhub 2-0:1.0: over-current condition on port 1. W+ f- D8 W- R0 P1 z3 ~9 a1 p
da8xx_musb_interrupt 538: VBUS error workaround (delay coming)
8 E# ]8 m: u) v% a/ W% T+ L' N我的电路图如附件,我用示波器测量过了,开始USB0_DRVVBUS脚起始是低电平,开机瞬间,它会变成高电平,USB0_VBUS也会) ?, Z, R& ?* c$ l" w) v5 H& r8 k; t4 j
随着上升至5V,开机瞬间,USB0_VBUS并没有出现跌落至低于4.4V,从电路上没有发现问题,然后开始追踪linux3.3 USB驱动代码,
# T( U5 H: |7 p. n& X/ U* n" c发现,在da8xx_musb_interrupt函数中,有如下代码:! x. Y' I& p* v0 l3 d
if (status & (DA8XX_INTR_DRVVBUS << DA8XX_INTR_USB_SHIFT)) {) @! c( K; Z% C% e  m* f0 `0 |
                int drvvbus = musb_readl(reg_base, DA8XX_USB_STAT_REG);& V% u: N% ~1 {
                void __iomem *mregs = musb->mregs;
4 I) ~, t) F' T) @                u8 devctl = musb_readb(mregs, MUSB_DEVCTL);
" K1 n, w0 z7 n* l+ p! Y  ?                int err;
- v7 l0 C" R$ |) G# B- X7 Z8 F$ |, ]
                err = is_host_enabled(musb) && (musb->int_usb &
) ^* F. r: I! \( K9 V; |: \                                                MUSB_INTR_VBUSERROR);6 o7 w1 e* x$ D" X+ C! q1 U
                if (err) {
0 m: m9 ^3 `0 [7 \                        /*
; V& \( C1 y0 u% w" e( m                         * The Mentor core doesn't debounce VBUS as needed5 t! R7 r. }2 d3 z- g  }' y
                         * 。。。
5 l6 F  I6 X. h" R                         */
- k$ P& c  M* |                        musb->int_usb &= ~MUSB_INTR_VBUSERROR;
* U  d, X1 W) v0 K) _4 z. Y( |                        musb->xceiv->state = OTG_STATE_A_WAIT_VFALL;2 L" }8 O, @- K0 W
                        mod_timer(&otg_workaround, jiffies + POLL_SECONDS * HZ);
' e" j& X: v3 o+ z% y: J: \                        WARNING("VBUS error workaround (delay coming)\n");
3 Q# G/ m# G; b! m/ `                }+ p5 e7 I2 m+ p
! L5 N2 F6 q+ }) L, a# m4 L
一直发生MUSB_INTR_VBUSERROR错误,然后会启动定时器,周期调用otg_timer函数,
) F/ W# L* f7 ]8 v; j9 n. X! l跳入如下分支:
$ q( }1 e6 m' Y, J! ~devctl = musb_readb(mregs, MUSB_DEVCTL);
* B! Z) n5 D( s& o$ V% Y4 e) {。。。
( l: S2 z$ _3 G! A8 l. d# zcase OTG_STATE_A_WAIT_VFALL:! W1 R' o; b& g4 ?& D
                /*3 D6 B4 F1 A( `$ V. z8 L: j9 `
                 * Wait till VBUS falls below SessionEnd (~0.2 V); the 1.3
! y5 ^: }  Q* ?+ }2 ?                 * RTL seems to mis-handle session "start" otherwise (or in
/ O9 X3 V1 s0 [3 W4 B5 B                 * our case "recover"), in routine "VBUS was valid by the time& k5 I3 w- p" K
                 * VBUSERR got reported during enumeration" cases.
, E8 q3 j5 E4 [( T, F                 */
# ^) V: Y9 ]7 k0 y0 K" s. y7 D                if (devctl & MUSB_DEVCTL_VBUS) {
( G* @4 t2 q4 i2 _% f. m                        mod_timer(&otg_workaround, jiffies + POLL_SECONDS * HZ);9 @. M3 C; X' i6 ?$ S; y9 X
                        break;$ k7 ~) b% e: k, W: U; Z5 L
                }$ B, V2 m: E5 \0 g8 r: c3 `4 z$ C' {/ w) ?
                musb->xceiv->state = OTG_STATE_A_WAIT_VRISE;
3 z; c+ Q, R( W6 K6 E, Q                musb_writel(musb->ctrl_base, DA8XX_USB_INTR_SRC_SET_REG,  b+ W) f( B  a( \2 N( ^  E
                            MUSB_INTR_VBUSERROR << DA8XX_INTR_USB_SHIFT);/ W8 M1 L% S9 d+ A0 g
                break;: [8 A, ?% ?, m" y
) c/ V7 _+ G6 k/ N0 v( s
其中,devctl是设备控制寄存器,我打印了它的直,是0x80, 也就是位7是1,代表着是B device,,明明是A类,
( @0 ^. C- k- ?4 O( U& ]不知道为啥自动变成B类了。而且VBUS一直是5V,正常的啊,可是驱动也无法修复。。5 k1 V4 L8 F! f4 O5 `7 L  \- z" k
        不知道亲们有没有遇到类似的情况,是怎么解决的?$ O* A) ^! E- X3 e0 Q; {

本帖子中包含更多资源

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

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-7-8 17:46 , Processed in 0.037841 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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