RK3568 如何配置USB

一、USB的了解

USB HOST :USB是由Host端控制整个总线的数据传输的。单个USB总线上,只能有一个Host。

USB OTG : OTG(On The Go),这是在USB2.0引入的一种mode,允许两个设备间商量谁去当Host。

二、配置VCC5V_USB3

以LY1024P为例:

从上图可以看到VCC5VUSB3脚要有电压须配置USBPEN脚使能,而USBPEN脚由GPIO1D4脚控制,因此需要拉高GPIO4_D4脚。

从上图可以看到OTG5V脚要有电压须配置OTGPWEN脚使能,而OTG_PWEN脚是默认拉高,故不需要修改。

usb {
        vcc5v0_host_en: vcc5v0-host-en {
            rockchip,pins = <1 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
        };

        vcc5v0_otg_en: vcc5v0-otg-en {
            rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
        };
    };

三、设备树配置

USB设备树配置如下:

usbdrd30: usbdrd {
        compatible = "rockchip,rk3568-dwc3", "rockchip,rk3399-dwc3";
        clocks = <&cru CLK_USB3OTG0_REF>, <&cru CLK_USB3OTG0_SUSPEND>,
             <&cru ACLK_USB3OTG0>, <&cru PCLK_PIPE>;
        clock-names = "ref_clk", "suspend_clk",
                  "bus_clk", "pipe_clk";
        #address-cells = <2>;
        #size-cells = <2>;
        ranges;
        status = "disabled";

        usbdrd_dwc3: dwc3@fcc00000 {
            compatible = "snps,dwc3";
            reg = <0x0 0xfcc00000 0x0 0x400000>;
            interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
            dr_mode = "otg";
            phys = <&u2phy0_otg>, <&combphy0_us PHY_TYPE_USB3>;
            phy-names = "usb2-phy", "usb3-phy";
            phy_type = "utmi_wide";
            power-domains = <&power RK3568_PD_PIPE>;
            resets = <&cru SRST_USB3OTG0>;
            reset-names = "usb3-otg";
            snps,dis_enblslpm_quirk;
            snps,dis-u1-entry-quirk;
            snps,dis-u2-entry-quirk;
            snps,dis-u2-freeclk-exists-quirk;
            snps,dis-del-phy-power-chg-quirk;
            snps,dis-tx-ipgap-linecheck-quirk;
            snps,dis_rxdet_inp3_quirk;
            snps,parkmode-disable-hs-quirk;
            snps,parkmode-disable-ss-quirk;
            quirk-skip-phy-init;
            status = "disabled";
        };
    };

    usbhost30: usbhost {
        compatible = "rockchip,rk3568-dwc3", "rockchip,rk3399-dwc3";
        clocks = <&cru CLK_USB3OTG1_REF>, <&cru CLK_USB3OTG1_SUSPEND>,
             <&cru ACLK_USB3OTG1>, <&cru PCLK_PIPE>;
        clock-names = "ref_clk", "suspend_clk",
                  "bus_clk", "pipe_clk";
        #address-cells = <2>;
        #size-cells = <2>;
        ranges;
        status = "disabled";

        usbhost_dwc3: dwc3@fd000000 {
            compatible = "snps,dwc3";
            reg = <0x0 0xfd000000 0x0 0x400000>;
            interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
            dr_mode = "host";
            phys = <&u2phy0_host>, <&combphy1_usq PHY_TYPE_USB3>;
            phy-names = "usb2-phy", "usb3-phy";
            phy_type = "utmi_wide";
            power-domains = <&power RK3568_PD_PIPE>;
            resets = <&cru SRST_USB3OTG1>;
            reset-names = "usb3-host";
            snps,dis_enblslpm_quirk;
            snps,dis-u2-freeclk-exists-quirk;
            snps,dis-del-phy-power-chg-quirk;
            snps,dis-tx-ipgap-linecheck-quirk;
            snps,dis_rxdet_inp3_quirk;
            snps,parkmode-disable-hs-quirk;
            snps,parkmode-disable-ss-quirk;
            status = "disabled";
        };
    };    

    usb_host0_ehci: usb@fd800000 {
        compatible = "generic-ehci";
        reg = <0x0 0xfd800000 0x0 0x40000>;
        interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&cru HCLK_USB2HOST0>, <&cru HCLK_USB2HOST0_ARB>,
             <&cru PCLK_USB>, <&usb2phy1>;
        clock-names = "usbhost", "arbiter", "pclk", "utmi";
        phys = <&u2phy1_otg>;
        phy-names = "usb2-phy";
        status = "disabled";
    };

    usb_host0_ohci: usb@fd840000 {
        compatible = "generic-ohci";
        reg = <0x0 0xfd840000 0x0 0x40000>;
        interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&cru HCLK_USB2HOST0>, <&cru HCLK_USB2HOST0_ARB>,
             <&cru PCLK_USB>, <&usb2phy1>;
        clock-names = "usbhost", "arbiter", "pclk", "utmi";
        phys = <&u2phy1_otg>;
        phy-names = "usb2-phy";
        status = "disabled";
    };

    usb_host1_ehci: usb@fd880000 {
        compatible = "generic-ehci";
        reg = <0x0 0xfd880000 0x0 0x40000>;
        interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&cru HCLK_USB2HOST1>, <&cru HCLK_USB2HOST1_ARB>,
             <&cru PCLK_USB>, <&usb2phy1>;
        clock-names = "usbhost", "arbiter", "pclk", "utmi";
        phys = <&u2phy1_host>;
        phy-names = "usb2-phy";
        status = "disabled";
    };

    usb_host1_ohci: usb@fd8c0000 {
        compatible = "generic-ohci";
        reg = <0x0 0xfd8c0000 0x0 0x40000>;
        interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&cru HCLK_USB2HOST1>, <&cru HCLK_USB2HOST1_ARB>,
             <&cru PCLK_USB>, <&usb2phy1>;
        clock-names = "usbhost", "arbiter", "pclk", "utmi";
        phys = <&u2phy1_host>;
        phy-names = "usb2-phy";
        status = "disabled";
    };

 

USB设备树完成配置后,编译完成后,烧录到板卡中。打开串口,将鼠标插上板卡,看日志打印如下图:

可以看到成功识别USB设备,USB配置成功。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小艹大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值