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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于USB的问题

[复制链接]

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
跳转到指定楼层
楼主
发表于 2016-12-1 09:25:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     小弟最近做了5块板子,用的创龙的核心板,其中4块USB2.0 host都没有问题,只有一块老是周期性报如下错误:
7 d( o$ o2 t2 }1 i# w$ Fhub 2-0:1.0: over-current condition on port 1
6 B7 P' @( n: _3 ?, B; F$ G; lda8xx_musb_interrupt 538: VBUS error workaround (delay coming), [, k# d$ o/ U3 _5 f6 `, _. q
我的电路图如附件,我用示波器测量过了,开始USB0_DRVVBUS脚起始是低电平,开机瞬间,它会变成高电平,USB0_VBUS也会
! \& S. j& q4 s8 k* P. L9 g随着上升至5V,开机瞬间,USB0_VBUS并没有出现跌落至低于4.4V,从电路上没有发现问题,然后开始追踪linux3.3 USB驱动代码,
( @9 @$ T. K( K6 Y4 W1 ^0 X: f发现,在da8xx_musb_interrupt函数中,有如下代码:
3 ~0 [# z/ K7 @; b4 @. }if (status & (DA8XX_INTR_DRVVBUS << DA8XX_INTR_USB_SHIFT)) {
7 B& L8 q/ R) E                int drvvbus = musb_readl(reg_base, DA8XX_USB_STAT_REG);
+ y( ]) a0 N8 w0 C; s9 ]                void __iomem *mregs = musb->mregs;! U3 u. T/ l! u( S9 U
                u8 devctl = musb_readb(mregs, MUSB_DEVCTL);/ z+ q1 w2 w; q* y; v2 k8 B. N0 G: I
                int err;
" {3 \* o* `7 }' N. H1 m9 B% P$ q( l5 l% D- V, r
                err = is_host_enabled(musb) && (musb->int_usb &( ?$ D* D$ H5 z# B, l
                                                MUSB_INTR_VBUSERROR);
2 D9 k  C" O! r9 |& ?                if (err) {
* {3 N0 d+ A' T                        /*8 y& N. w. c% l; }2 r1 p9 {
                         * The Mentor core doesn't debounce VBUS as needed
; A* F- `& N. `" ?  `% c! {+ F                         * 。。。
7 b( w+ w( z" \1 E                         */1 Q$ c/ s2 `8 [
                        musb->int_usb &= ~MUSB_INTR_VBUSERROR;! P3 k! A) ^3 [4 F" t# A+ X$ [/ C+ z
                        musb->xceiv->state = OTG_STATE_A_WAIT_VFALL;% {' e4 `1 h% y: s( N# }5 p
                        mod_timer(&otg_workaround, jiffies + POLL_SECONDS * HZ);5 M% v& `8 \" y# d
                        WARNING("VBUS error workaround (delay coming)\n");
! F1 Z! ?  q* i4 M; |                }
# w. k8 Y  I" I& s
8 |  o+ j; J" F5 `: O9 e一直发生MUSB_INTR_VBUSERROR错误,然后会启动定时器,周期调用otg_timer函数,
; a) D" ~8 ^5 X+ m- x1 v跳入如下分支:
7 l) Q/ E. n3 Z* l4 n0 l' v% a7 \  }devctl = musb_readb(mregs, MUSB_DEVCTL);' u4 i; \3 T: G; F! ]
。。。6 @5 q8 H9 I* N" r) Y% p; N" J
case OTG_STATE_A_WAIT_VFALL:
2 v& B% l  e' @                /*' `: r6 ^( B) v5 e/ y$ [
                 * Wait till VBUS falls below SessionEnd (~0.2 V); the 1.3
+ d% S1 A1 U! P, v9 V' E                 * RTL seems to mis-handle session "start" otherwise (or in- e* z$ D. X+ F' k; n
                 * our case "recover"), in routine "VBUS was valid by the time4 C+ p* ^* P0 {" K& B1 Q' b; f
                 * VBUSERR got reported during enumeration" cases.
3 {: m" [4 |/ O6 P6 w9 |2 n                 */
. b5 N, Y! J  M                if (devctl & MUSB_DEVCTL_VBUS) {
. g0 ]4 J0 k* e' `' m                        mod_timer(&otg_workaround, jiffies + POLL_SECONDS * HZ);2 t9 J# o2 p8 d% m& }2 @8 l  R% Z
                        break;7 F7 j" Q/ T0 J: y
                }3 U. m9 B$ I2 D$ ^. |
                musb->xceiv->state = OTG_STATE_A_WAIT_VRISE;+ b1 C* |0 l# T! \0 M
                musb_writel(musb->ctrl_base, DA8XX_USB_INTR_SRC_SET_REG,! x2 V! [0 s9 _, u5 F+ q* l
                            MUSB_INTR_VBUSERROR << DA8XX_INTR_USB_SHIFT);. d+ V+ [3 c$ y: ~+ y# V
                break;9 M1 O1 L  X% q5 s8 z

) p, @% `+ d  ^" x' T8 x其中,devctl是设备控制寄存器,我打印了它的直,是0x80, 也就是位7是1,代表着是B device,,明明是A类,
* G4 b  j7 Q. Q3 n" c0 l! Q- s) i6 ^不知道为啥自动变成B类了。而且VBUS一直是5V,正常的啊,可是驱动也无法修复。。$ ^, j5 |4 t7 p) Y- S' c; J& a
        不知道亲们有没有遇到类似的情况,是怎么解决的?8 H" S' V. Q! |& i8 H7 B

本帖子中包含更多资源

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

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-12-31 16:30 , Processed in 0.039822 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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