RK平台如何配置USB功能

news2025/1/5 9:34:30

简介

RK平台基本能够通过dts配置就能实现USB功能。为了方便理解,我这里分三部分来介绍,包括:usb-phy,usb控制器,usb供电。

usb-phy

usb-phy负责最底层的信号转换,主要是硬件的差分信号转换成数字信号传给usb控制器,然后再送到主控,其框架大概如下:

usb数据线
CPU
usb controler
usb-phy
usb device

找原理图上的usb-phy

以rk3399的host口为例,我们先找到原理图上对应的usb口:
在这里插入图片描述
由原理图我们可以知道,rk3399有两个usb-phy,分别是PHY0和PHY1,一个usb-phy有两个port口,分别是typec口和host口,我们要配置的是PHY0下面的host口,确定好这个之后我们就可以去dts找对应的配置节点。

找dtsi中的usb-phy

在rk3399.dtsi中我们可以看到:

                u2phy0: usb2-phy@e450 {
                        compatible = "rockchip,rk3399-usb2phy";
                        reg = <0xe450 0x10>;
                        clocks = <&cru SCLK_USB2PHY0_REF>;
                        clock-names = "phyclk";
                        #clock-cells = <0>; 
                        clock-output-names = "clk_usbphy0_480m";
                        power-domains = <&power RK3399_PD_PERIHP>;
                        status = "disabled";

                        u2phy0_host: host-port {
                                #phy-cells = <0>; 
                                interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH 0>;
                                interrupt-names = "linestate";
                                status = "disabled";
                        };   

                        u2phy0_otg: otg-port {
                                #phy-cells = <0>; 
                                interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH 0>,<GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH 0>,<GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 0>;
                                interrupt-names = "otg-bvalid", "otg-id","linestate";
                                status = "disabled";
                        };   
                };   

从以上代码看到,原理图上的PHY0刚好对应u2phy0,下面有两个port,分别是u2phy0_host和u2phy0_otg,我们关注的是u2phy0_host,因此,只要确认dts中有把u2phy0和u2phy0_host打开就可以了,如:

&u2phy0 {
        status = "okay";
        u2phy0_host: host-port {
                status = "okay";
        };
};

usb控制器

确定好usb-phy之后,我们可以直接去rk3399.dtsi就可以找到对应的usb控制器了,在rk3399.dtsi中,我们可以看到:

        usb_host0_ehci: usb@fe380000 {
                compatible = "generic-ehci";
                reg = <0x0 0xfe380000 0x0 0x20000>;
                interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH 0>;
                clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST0_ARB>,<&cru SCLK_USBPHY0_480M_SRC>;
                clock-names = "hclk_host0", "hclk_host0_arb", "usbphy0_480m";
                phys = <&u2phy0_host>;
                phy-names = "usb";
                power-domains = <&power RK3399_PD_PERIHP>;
                status = "disabled";
        };

        usb_host0_ohci: usb@fe3a0000 {
                compatible = "generic-ohci";
                reg = <0x0 0xfe3a0000 0x0 0x20000>;
                interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH 0>;
                clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST0_ARB>,<&cru SCLK_USBPHY0_480M_SRC>;
                clock-names = "hclk_host0", "hclk_host0_arb", "usbphy0_480m";
                phys = <&u2phy0_host>;
                phy-names = "usb";
                power-domains = <&power RK3399_PD_PERIHP>;
                status = "disabled";
        };

以上两个节点里面都有这样一句:phys = <&u2phy0_host>;,这表明这两个usb控制器都用了u2phy0_host这个usb-phy,这里我们需要了解一下,这两个usb控制器分别是ehci和ohci,ohci支持usb1.0和usb1.1,ehci支持usb2.0,为了同时支持usb1.0、usb1.1和usb2.0,就需要同时用到ehci和ohci,因此需要把这两个usb控制器都打开,如:

&usb_host0_ehci {
        status = "okay";
};
&usb_host0_ohci {
        status = "okay";
};

usb供电

RK平台的usb供电主要是usb-phy和vbus,其他的供电在芯片内部,我们一般不需要操作。

usb-phy的供电

从前面usb-phy的原理图我们可以看到有三路供电,分别是USB_AVDD_0V9,USB_AVDD_1V8,USB_AVDD_3V3,这三路供电将会影响usb的信号,一般由pmu提供的,只要硬件设计的时候跟官方的参考原理图一样,一般不需要修改,如果有自己修改,需要确认清楚,这三路供电的配置是这样的:

                        vcc0v9_soc: LDO_REG3 {
                                regulator-always-on;
                                regulator-boot-on;
                                regulator-min-microvolt = <900000>;
                                regulator-max-microvolt = <900000>;
                                regulator-name = "vcc0v9_soc";
                                regulator-state-mem {
                                        regulator-on-in-suspend;
                                        regulator-suspend-microvolt = <900000>;
                                };
                        };
                        vcc_1v8: LDO_REG2 {
                                regulator-always-on;
                                regulator-boot-on;
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
                                regulator-name = "vcc_1v8";
                                regulator-state-mem {
                                        regulator-on-in-suspend;
                                        regulator-suspend-microvolt = <1800000>;
                                };
                        };
                        vcc3v3_sys: DCDC_REG4 {
                                regulator-always-on;
                                regulator-boot-on;
                                regulator-min-microvolt = <3300000>;
                                regulator-max-microvolt = <3300000>;
                                regulator-initial-mode = <0x2>;
                                regulator-name = "vcc3v3_sys";
                                regulator-state-mem {
                                        regulator-on-in-suspend;
                                        regulator-suspend-microvolt = <3300000>;
                                };
                        };

注意:当usb出现识别异常的时候需要确认一下这三路供电,其纹波不能超过电压值的10%。

vbus的供电

vbus供电就是给usb设备用的电源,从原理图可以看到:
在这里插入图片描述
在这里插入图片描述
由此我们可以知道,这个host口的vbus是由pmu供过来的,我们可以找到dts对应的节点:

                        vcc5v0_usb: SWITCH_REG1 {
                                regulator-always-on;
                                regulator-boot-on;
                                regulator-min-microvolt = <5000000>;
                                regulator-max-microvolt = <5000000>;
                                regulator-name = "vcc5v0_usb";
                                regulator-state-mem {
                                        regulator-on-in-suspend;
                                        regulator-suspend-microvolt = <5000000>;
                                };
                        };

RK平台这个供电是在usb-phy驱动里面控制的,因此我们把它配置到usb-phy节点中:

&u2phy0 {
        status = "okay";
        u2phy0_host: host-port {
                phy-supply = <&vcc5v0_usb>;
                status = "okay";
        };
};

至此,一个usb host口的dts就配置完了,如果其他配置没问题(如defconfig)就能正常工作了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十条ChatGPT常用的Prompt

Prompt 本文数据来源&#xff1a;Will 3.6-6.16 硅谷&#xff0c;原作者&#xff1a;rowancheung 一&#xff0c;简化复杂的信息 Prompt&#xff1a; 将&#xff08;主题&#xff09;分解成更小、更容易理解的部分。使用类比和现实生活中的例子来简化概念并使其更相关 Brea…

Python之并发多线程操作

一、threading模块介绍 multiprocess模块的完全模仿了threading模块的接口&#xff0c;二者在使用层面&#xff0c;有很大的相似性 二、开启线程的两种方式 方式一 #方式一 from threading import Thread import time def sayhi(name):time.sleep(2)print(%s say hello %na…

最大公约数(GCD) 与 最小公倍数(LCM)的 定义、关系、求法

最大公约数 与 最小公倍数 约数 和 倍数最大公约数最小公倍数 最大公约数与最小公倍数的关系求最大公约数、最小公倍数例一例二 约数 和 倍数 如果数 a a a能被数 b b b整除&#xff0c; a a a就叫做 b b b的倍数&#xff0c; b b b就叫做 a a a的约数。 约数和倍数都表示一个…

从0-1实战react项目

文章目录 1. 安装2. 完成一个组件开发3. 添加路由3. 引入element-react1. 运行发现报错./node_modules/element-react/dist/npm/es5/src/locale/format.js2. 接着又报错The <Router /> component appears to be a function component that returns a class instance. Cha…

[SpringBoot]关于Profile配置文件关于Slf4j日志

关于Profile配置文件 在Spring系列框架中&#xff0c;关于配置文件&#xff0c;允许同时存在多个配置文件&#xff08;例如同时存在a.yml、b.yml等&#xff09;&#xff0c;并且&#xff0c;你可以按需切换某个配置文件&#xff0c;这些默认不生效、需要被激活才生效的配置&am…

【ProtoBuf】protobuf序列化协议

Protobuf介绍 Protobuf (Protocol Buffers) 是谷歌开发的一款无关平台&#xff0c;无关语言&#xff0c;可扩展&#xff0c;轻量级高效的序列化结构的数据格式&#xff0c;用于将自定义数据结构序列化成字节流&#xff0c;和将字节流反序列化为数据结构。所以很适合做数据存储…

容器底层实现技术

一、Namespace 和 Cgroup 1、容器技术发展历史 2、Docker 容器实现原理 1. Docker 容器在实现上通过 namespace 技术实现进程隔离&#xff0c; 通过Cgroup 技术实现容器进程可用资源的限制 3、Namespace Namespace &#xff1a;命名空间 1. 作用&#xff1a;资源隔离 2. 原理&…

web前端课程作业设计:个人简历

一.说明 今天博主的web前端选修课结课了&#xff0c;期末大作业也提交了&#xff0c;今天写一篇博客把我的大作业分享给大家。 二.题目 1. 大作业题目 个人简历主页设计 2. 内容要求 应尽量包含以下内容&#xff1a; 包含个人基本信息、教育背景、个人风采、与我联系四块…

企业四要素核验-企业四要素核验接口-api接口

接口地址&#xff1a; https://登录后显示/pyi/184/358(支持:http/https)) 在线查询&#xff1a;https://www.wapi.cn/api_detail/184/358.html 网站地址&#xff1a;https://www.wapi.cn 返回格式&#xff1a;json,xml 请求方式&#xff1a;GET,POST 请求说明&#xff1a; …

【实用篇】Elasticsearch01

分布式搜索引擎01 – elasticsearch基础 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在GitHub搜索…

智慧公厕系统如何通过物联网技术提高公厕的管理效率

智慧公厕系统可以通过物联网技术&#xff0c;实现公共卫生间的智能化管理和服务&#xff0c;提高管理效率。本文将详细介绍智慧公厕系统如何通过物联网技术提高公共卫生间的管理效率&#xff0c;从硬件、软件、系统等方面逐一分析。 XP-智慧厕所方案-HYF20230328&#xff08;16…

工业企业为什么要用边缘计算网关?

在我们进入智能制造和工业4.0的新时代&#xff0c;工业企业的数据需求正急速增长。传感器&#xff0c;机器和设备每分钟都在产生大量数据&#xff0c;它们对实时处理和分析的需求比以往任何时候都要强烈。这就是为什么工业企业需要边缘计算网关。 边缘计算网关在物联网架构中担…

大数据:Apache hive分布式sql计算平台,hive架构,hive部署,hive初体验

大数据&#xff1a;Apache hive分布式sql计算平台 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&a…

Java002——JDK的安装以及配置环境变量

为什么要安装jdk 1、JDK 全称 Java Development Kit&#xff0c;意为 Java 开发工具。&#xff0c;要想开发java程序就必须安装JDK。没有JDK的话&#xff0c;无法编译运行Java程序。 2、JDK包含的基本组件包括以下文件&#xff1a;   javac.exe,用于编译java文件&#xff0c…

不经意传输(OT)了解

概述 OT&#xff0c;不经意传输&#xff0c;常被大量用于安全多方计算中&#xff0c;能够很大程度决定一个SMPC协议的效率。它的核心概念是接收方可以从发送方&#xff08;持有秘密信息&#xff09;手中选择性接收自己想要的信息而接收方对所选择的信息内容一无所知。目前有2-…

乐谱文件转换,支持批量mscz、mxl、musicxml转mp3等格式

我是一个喜欢听音乐的人&#xff0c;每天都会在路上听着歌放松自己。但是有时候想要听的歌并没有下载下来&#xff0c;或者格式不兼容。 最近我发现了一个神奇的软件——mscz转mp3&#xff0c;可以把乐谱文件转成mp3格式&#xff01; 软件界面简洁明了&#xff0c;使用也非常…

js的Bom操作

1.认识Bom ◼ BOM&#xff1a;浏览器对象模型&#xff08;Browser Object Model&#xff09;  简称 BOM&#xff0c;由浏览器提供的用于处理文档&#xff08;document&#xff09;之外的所有内容的其他对象&#xff1b;  比如navigator、location、history等对象&#xff1…

YOLOv5改进系列(6)——替换主干网络之 ShuffleNetV2

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

预约直播|揭秘鸿蒙全新流量阵地,元服务带来的体验变革

【导读】 在PC 互联网到移动互联网的演进过程&#xff0c;随着人们对交互和信息获取的智能化要求越来越高&#xff0c;移动终端上的应用生态发展到今天也面临着变革。传统厚重的App&#xff0c;功能齐全&#xff0c;但开发成本高、周期长&#xff0c;且存在搜索、安装、卸载等…

Mybatis-Plus实战

文章目录 #简介#特性#支持数据库总结1、Mybatis-Plus常用注解2、[条件构造器](https://www.baomidou.com/pages/10c804/#abstractwrapper)2.1 介绍2.2 条件 3、Mybatis-Plus属性配置3.1 Mybatis-Plus常用配置项3.2 mybatis-plus.configuration. 下配置项3.3 配置小结 4、CRUD实…