This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM3352:如何将 USB1_DRVVBUS 用作 GPIO?

Guru**** 2547310 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/853561/am3352-how-to-use-usb1_drvvbus-as-gpio

器件型号:AM3352

您好!  

USB1_DRVVBUS 引脚在硬件中用作 GPIO3[13]来控制电源控制。 我尝试从用户模式控制它。  有人能帮我弄清楚我做错了什么吗? 谢谢。  

我按如下方式编辑了内核 DTS 文件:

am33xx_pinmux{(am33xx_pinmux)}
    USB1_Pins:pinmux_USB1_Pins{
        pinctrl-single、pins =<
            AM33XX_IOPAD (0xA34、PIN_OUTPUT 下拉| MUX_MODE7)   /* USB1_drvvbus.GPIO3_13 *
        >;
    };
GPIO3{&G
    状态="正常";
    TI、no-reset-on-init;
};
USB1_phy{
    pinctrl-names ="default";
    pinctrl-0 =<&USB1_PINs>;
    状态="正常";
    #phy-cells =<0>;
};
在用户模式下、我确实这么做了  
$回显> gpio109/方向。
$ echo 1 > gpio109/值
当 GPIO 值发生变化时、我可以检测到电压发生变化。
但无论什么、连接到 USB1的 USB 驱动器都无法识别。  
使用 USB1_DRVVBUS 作为 GPIO 是否会禁用 USB1主机功能?  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    不应在 GPIO 模式下使用 USBx_DRVVBUS 引脚来控制 VBUS 电源。 它的 GPIO 模式只意味着引脚不用于 USB 功能(例如、不需要 USB 功能或者只需要外设模式)。 如果 USB 模块用于仅主机模式或双角色模式、则该引脚必须处于 DRVVBUS 模式。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想知道是否可以进一步澄清 USB_DRVVBUS 引脚与整个 USB 子系统的运行情况。 技术资源管理在一些相互关系上不清楚。 例如、如果 USB 主机出现过流情况、USB 控制器的运行情况、特别是 USB-DRVVBUS 引脚的运行情况如何? 我想看到的是、USB 主机5V 电源模块的引脚控制应该在尝试再次启动之前将模块关闭一段时间。 如果在短时间内遇到另一个过流事件、则应关闭模块(以及 USB 主机控制器?) 再次声明硬件故障并将其关闭。 此外、TRM 表示 DRVVBUS 信号将变为有效状态、然后控制器等待高达100ms、VBUS_IN 变为有效状态。 如果 USB 主机5V 电源模块上电所需的时间超过100ms (不应该只是我想探讨意外情况)、是否有办法延迟或以其他方式调整此行为?

    我期待你的答复。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Brian、

    USBx_DRVVBUS 是用于控制 VBUS 电源开关的输出引脚。 通常、当 MUSB 控制器转换为主机模式(基于 VBUS_VALID 和/或 ID 引脚状态的条件)时、控制器将 USBx_DRVVBUS 引脚置为有效。 当 MUSB 控制器转换到外设模式(同样、根据 VBUS_VALID 和/或 ID 引脚状态)时、控制器将 USBx_DRVVBUS 引脚置为无效。

    在过流情况下、MUSB 控制器本身不会检测 VBUS 电流、但如果过流情况导致 VBUS 电压降至 VBUS_VALID 阈值以下、MUSB 控制器将从主机模式转换为外设模式、并将 USBx_DRVVBUS 置为无效。 MUSB 控制器本身不能从过流情况中恢复、软件必须启动外设模式到主机模式转换。 目前在 Linux 中、USB 内核驱动程序将尝试重新启动3次。 如果由于过流情况而导致所有故障、主机端口将关闭、直到重新启动或重新加载 USB 驱动程序。

    [引用用户="Brian Carrigan">此外、TRM 表示 DRVVBUS 信号将变为有效、然后控制器等待高达100ms、VBUS_IN 变为有效状态。 如果情况是 USB 主机5V 电源模块上电所需的时间超过100ms (不应该只是我想探讨意外情况)、[/报价]

    如果 VBUS 需要超过100ms 才能达到 VBUS_VALID 阈值、MUSB 控制器将不会转换到主机模式。

    [引用用户="Brian Carrigan"]是否有方法延迟或以其他方式调整此行为?

    否、控制器中硬编码了100ms 超时。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答。 我认为这可能会为我澄清问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    您能否提供一些参考文档或文章、说明如何在用户模式下通过软件在主机和器件之间切换 MUSB?  谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:英杰

    您不能使用 Linux 用户空间软件在主机和设备模式之间直接切换 MUSB。 如果是、则可以轻松创建违反 USB 规范的方案。

    MUSB 模式切换依赖于到微型 AB 插座的 USB 电缆连接。

    将 MUSB 连接到 USB 主机时、您可以将 micro-B 电缆插入 MUSB。 MUSB 检测到 VBUS 存在并且其 ID 引脚悬空、以进入器件模式。

    将 MUSB 连接到 USB 设备时、您可以将 micro-A 电缆插入 MUSB。 MUSB 检测到其 ID 引脚接地、然后将 USBx_DRVVBUS 引脚置为有效、以向 USB 器件提供 VBUS、并将 MUSB 切换到主机模式。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    启动系统后我发现此状态:

     cat /sys/devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.1/mode
    A_WAIT_BCON
    # cat /sys/firmware/devicetree/base/ocp/usb@47400000/USB\@47401800/dr_mode  
    主机
    A_WAIT_BCON 是什么意思? 如果我将一个 USB 器件连接到 USB1、状态不变、并且未检测到 USB 器件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:英杰

    A_WAIT_BCON 是在 USB OTG 规范中定义的 OTG 状态机中的一个状态。 您可以将其视为等待 USB 设备连接的 USB 主机。

    要了解未检测到 USB 设备的原因、请

    -这是在您的客户电路板上还是在 TI EVM 上? 如果是前者、请提供原理图的 USB 部分、包括 AM335x MUSB 与 USB 插座之间的所有信号连接;

    -您使用的是 SDK 的哪个版本?

    -使用以下命令在插入 USB 设备之前和之后提供寄存器转储:

    # grep -i 'devctl\|power'/sys/kernel/debug/musb-hdrc.1/regdump

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    我的 SDK 为5.0.0.15。

    我们使用的是定制板。  

    这里是原理图。

    e2e.ti.com/.../dmt303c_2D00_usb.pdf

    # grep -i 'devctl\|power'/sys/kernel/debug/musb-hdrc.1/regdump

    电源:e0
    DevCtl:19.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:英杰

    寄存器转储显示 MUSB 控制器已准备好并正在等待器件连接。 我在您的电路板 AM335x USB1设计中看不到任何相反问题。 我注意到电路板上有一个集线器连接到 AM335x USB1、但该集线器未在 USB1上枚举。 请查看集线器数据表、以确保集线器周围的设计都正确。 如果在 AM335x 上电后 USB1_DP 引脚变为高电平、还请测量 USB1_DP 引脚。

    根据 USB 规范、集线器上行端口仅在 VBUS 有效时才应打开 DP 或 DM 上拉。 在您的集线器设计中、集线器如何知道何时应打开其上拉电阻器?