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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于USB的问题

[复制链接]

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
跳转到指定楼层
楼主
发表于 2016-12-1 09:25:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     小弟最近做了5块板子,用的创龙的核心板,其中4块USB2.0 host都没有问题,只有一块老是周期性报如下错误:0 z( A$ `$ ?# n8 E# s) ~, f
hub 2-0:1.0: over-current condition on port 1
; K3 U* _- E- M2 xda8xx_musb_interrupt 538: VBUS error workaround (delay coming)
. h2 v: f- T' Y% J& f! e/ v! h我的电路图如附件,我用示波器测量过了,开始USB0_DRVVBUS脚起始是低电平,开机瞬间,它会变成高电平,USB0_VBUS也会
- W5 T4 h  e/ n& I. F随着上升至5V,开机瞬间,USB0_VBUS并没有出现跌落至低于4.4V,从电路上没有发现问题,然后开始追踪linux3.3 USB驱动代码,6 I! R6 s& k# s
发现,在da8xx_musb_interrupt函数中,有如下代码:) ?& b' v/ q8 i2 {  W
if (status & (DA8XX_INTR_DRVVBUS << DA8XX_INTR_USB_SHIFT)) {
/ V( Y( o$ `; f6 o3 z9 c; e# `( p                int drvvbus = musb_readl(reg_base, DA8XX_USB_STAT_REG);2 ?. l# U' z. h4 h0 _
                void __iomem *mregs = musb->mregs;' `3 K5 i( H6 t& Z
                u8 devctl = musb_readb(mregs, MUSB_DEVCTL);
' {9 ~  Y$ |! M3 a/ a& m( e                int err;
- ~9 R1 ~2 P, m6 H# s: U4 U' O. D4 _3 \1 B5 ^
                err = is_host_enabled(musb) && (musb->int_usb &
  P6 q: I$ T/ o- K                                                MUSB_INTR_VBUSERROR);
8 y; _5 d8 \4 u2 P; u' s8 Z$ L/ M                if (err) {
% l  K2 S$ F( d                        /*' Q/ A, A* X) Y$ v, s0 t
                         * The Mentor core doesn't debounce VBUS as needed
5 M) Y5 U0 q+ T3 g  ~$ g7 H                         * 。。。
* d$ K$ N- n" ]4 B$ H  K                         */4 ~# i9 A( Y6 C; y
                        musb->int_usb &= ~MUSB_INTR_VBUSERROR;
$ H3 _! ~: ]) `- `                        musb->xceiv->state = OTG_STATE_A_WAIT_VFALL;$ a$ @* y" S  Q! X+ i  C
                        mod_timer(&otg_workaround, jiffies + POLL_SECONDS * HZ);/ K1 e; t7 J3 E! n& [% `0 o
                        WARNING("VBUS error workaround (delay coming)\n");
6 E) I. Z+ K2 Y                }
! [9 M  P( Y/ v; t, j# \1 O' J- b6 G/ L- l- g5 c$ {
一直发生MUSB_INTR_VBUSERROR错误,然后会启动定时器,周期调用otg_timer函数,
& U: x' s7 Z: Y( ]/ _: M5 j跳入如下分支:
6 f: v6 S4 ^! i, odevctl = musb_readb(mregs, MUSB_DEVCTL);
0 G/ N" ?# F: r! a. \。。。5 B" Z6 [; a" K/ d
case OTG_STATE_A_WAIT_VFALL:0 f$ k7 M" X# y2 u+ {, y0 L8 u+ t! q
                /*
# H3 u' I) w! Z, T: ^                 * Wait till VBUS falls below SessionEnd (~0.2 V); the 1.3# H' H6 T  d% y; l: `( R+ C3 H
                 * RTL seems to mis-handle session "start" otherwise (or in
/ {  K+ p, W, a                 * our case "recover"), in routine "VBUS was valid by the time
1 Y5 _1 n) A/ N- Q, V) G                 * VBUSERR got reported during enumeration" cases.
- ~& p1 p6 M5 P                 */
% b) j& {. W6 J; N7 Y                if (devctl & MUSB_DEVCTL_VBUS) {$ X# h' r4 U7 r* q2 ?; B- i
                        mod_timer(&otg_workaround, jiffies + POLL_SECONDS * HZ);9 N* q! Z5 Z  v2 l$ b, v+ k3 A7 q
                        break;& v) b/ L# i. f) j+ g
                }( W& b' Y4 Z) j
                musb->xceiv->state = OTG_STATE_A_WAIT_VRISE;
% Y/ `$ l- V4 G1 m: _0 T5 I                musb_writel(musb->ctrl_base, DA8XX_USB_INTR_SRC_SET_REG,8 o( }- p1 s. x& L7 L& C0 n6 _3 K
                            MUSB_INTR_VBUSERROR << DA8XX_INTR_USB_SHIFT);5 q4 [9 `* V: G3 ]) q/ n0 v$ B9 S
                break;' W" F( B. K) E: C/ T$ B& h' E

0 S- x# t- ~. l5 K. z. i( l3 I9 v$ {其中,devctl是设备控制寄存器,我打印了它的直,是0x80, 也就是位7是1,代表着是B device,,明明是A类,2 r3 o3 r4 R/ s- \
不知道为啥自动变成B类了。而且VBUS一直是5V,正常的啊,可是驱动也无法修复。。5 _6 P* U7 R: M) {0 `: c
        不知道亲们有没有遇到类似的情况,是怎么解决的?
0 V! r2 S$ t( X7 l( F0 Q4 Q4 H& m  L+ r

本帖子中包含更多资源

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

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-16 17:01 , Processed in 0.041775 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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