USB接口目前主要有四个接口类型:

 1,USB Type-A,这种接口类型是我们最常见的USB接口,主要用在电脑,充电器,鼠标,键盘,U盘等设备上。2,USB Type-B,这种接口类型主要用在打印机等设备上,没有type-A接口常见。3,Micro-B,这种接口我们都见过,就是手机充电器的接口。4,USB Type-C,USB Type-C最明显的特点就是支持正反面盲插,是以后USB接口的发展趋势

实物图如下图所示:

RK3399 SoC内部4个USB控制器与USB PHY的连接如下图所示。
其中,DP是指Display Port控制器,DP与USB 3.0共用Type-C PHY。如图1-2所示,一个完整的Type-C功能,是由
Type-C USB 3.0 PHY & DP PHY和USB 2.0 OTG PHY两部分组成的,这两部分PHY在芯片内部的硬件模块是独立的,
供电也是独立的。

RK3399支持两个Type-C USB 3.0(Type-C PHY is a combination of USB 3.0 SuperSpeed PHY and DisplayPort Transmit PHY)和两个USB 2.0 Host。其中,两个Type-C USB 3.0控制器硬件都可以支持OTG(USB Peripheral和USB Host),并且向下兼容USB2.0/1.1/1.0。

此外,Type-C USB 3.0可以根据实际的应用需求,将物理接口简化设计为Type-A USB 3.0/2.0,Micro USB 3.0/2.0等多种接口类型,内核USB驱动已经兼容这几种不同类型的USB接口,只需要根据实际的硬件设计修改对应的板级DTS配置,就可以使能相应的USB接口。

RK3399 SDK DTS的默认配置,支持Type-C0 USB 3.0 OTG功能,Type-C1 USB 3.0 Host功能。DTS的配置主要包括DWC3控制器、Type-C USB 3.0 PHY以及USB 2.0 PHY。

Type-C0/1 USB控制器硬件都支持USB 3.0 OTG(USB Peripheral和USB Host)功能,并且向下兼容USB
2.0/1.1/1.0。但由于当前内核的USB框架只支持一个USB口作为Peripheral功能,所以SDK默认配置Type-C0支持OTG mode,而Type-C1仅支持Host mode。

3399 有两个功能相同的 typec 口:
typec0 口包括 usb 控制器(&usbdrd3_0); usb3phy(&tcphy0)和 usb2phy (&u2phy0);
typec1 口包括 usb 控制器(&usbdrd3_1);usb3phy(&tcphy1)和 usb2phy (&u2phy1);

对应节点的意义:
USB控制器父节点:usbdrd3
USB控制器子节点:usbdrd_dwc3
PHY的节点:tcphy和u2phy
USB2 PHY节点:u2phy

Type-C0 /1 USB PHY DTS配置:
Type-C0/1 USB PHY的硬件由USB 3.0 PHY(只支持Super-speed)和USB 2.0 PHY(支持High-speed/Full-
speed/Low-speed)两部分组成。所以,对应的USB PHY DTS也包括USB 3.0 PHY和USB 2.0 PHY两部分。

以RK3399 Sapphire Excavator Board Type-C0 /1 USB 3.0 PHY DTS配置为例,
arch/arm64/boot/dts/rockchip/rk3399.dtsi文件中的
tcphy0: phy@ff7c0000和tcphy1: phy@ff800000的配置。

Type-C0/1 USB 2.0 PHY DTS配置:
RK3399 有两个 USB 2.0 combphy(一个PHY支持两个port,一个port连接OTG,另一个port连接Host),本文档称
之为USB 2.0 PHY0和PHY1(参考图1-2)。其中,PHY0的port0作为Type-C0 USB的USB 2.0 PHY,PHY1的port0作
为Type-C1 USB的USB 2.0 PHY。

以RK3399 Sapphire Excavator Board Type-C0 /1 USB2.0 PHY DTS配置为例:
arch/arm64/boot/dts/rockchip/rk3399.dtsi的
grf: syscon@ff770000的配置

arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi的
&u2phy0的配置
&u2phy1的配置

由于当前的内核USB框架只能支持一个USB 口作为Peripheral功能,所以RK3399 SDK默认配置Type-C0作为OTG mode支持USB Peripheral功能,而Type-C1只支持Host mode。实际产品中,可以根据应用需求,配置Type-C1为OTG mode,支持USB Peripheral功能。

Type-A USB3.0 Host DTS配置的注意点如下:
对应的fusb节点不要配置,因为Type-A USB3.0不需要fusb302芯片
对应的USB控制器父节点(usbdrd3)和PHY的节点(tcphy和u2phy)都要删除extcon属性
对应的USB控制器子节点(usbdrd_dwc3)的dr_mode属性要配置为"host"

Micro USB3.0 OTG DTS配置的注意点如下:
对应的fusb节点不要配置,因为Micro USB3.0不需要fusb302芯片
对应的USB PHY节点(tcphy和u2phy)都要删除extcon属性
对应的USB控制器父节点(usbdrd3)中,extcon属性引用为u2phy的节点
对应的USB控制器子节点(usbdrd_dwc3)的dr_mode属性要配置为"otg"
对应的USB2 PHY节点(u2phy)中,配置Vbus regulator
Micro USB 3.0 OTG 是根据ID脚的电平变化(与Micro USB 2.0 OTG相同)来切换Peripheral mode和Host mode

如果用Type-A接口,系统启动后,需要应用层通过内核提供的OTG mode切换节点,配置USB控制器工作Peripheral mode或者Host mode。

下面来说下我的项目情况:
rk3399有两个功能相同的Typec口,都支持dp输出,目前硬件的接法是 Typec0接到USB Type-A做USB host或者USB otg功能,而Typec1接到DP显示接口,目前SDK已经添加DP驱动和USB驱动,只需要DTS文件配置一下即可。

1、硬件原理连接方面:

2、dts配置方面
文件:arch/arm64/boot/dts/rockchip/rk3399-box-rev2-hdmi.dts

 /* DP hot plug detect */vpd0: virtual-pd0 {compatible = "linux,extcon-pd-virtual";dp-det-gpios = <&gpio4 25 GPIO_ACTIVE_LOW>;/* 0: positive, 1: negative*/vpd,init-flip = <0>;/* 0: u2, 1: u3*/vpd,init-ss = <0>;/* 0: dfp, 1: ufp, 2: dp 3: dp/ufp */vpd,init-mode = <3>;};&pinctrl {vpd {vpd0_int: vpd0-int {rockchip,pins =<4 25 RK_FUNC_GPIO &pcfg_pull_up>;};};}/* Enable USB 3.0 PHY0 */
&tcphy0 { //[hw]use typec0 => USB3.0
//  extcon = <&fusb0>; // no using [fusb302]status = "okay";
};/* Enable USB 3.0 PHY1 */
&tcphy1 { //[hw]use typec1 => DP portstatus = "okay";extcon = <&vpd0>;
};/* Config DP port, use DP port as DP port */
&cdn_dp {status = "okay";phys = <&tcphy1_dp>; //DP use typec phy1extcon = <&vpd0>;dp_vop_sel = <1>;
};/* Enable Type-C0 USB 2.0 PHY */
&u2phy0 {status = "okay";
//  extcon = <&fusb0>; // no using [fusb302]u2phy0_otg: otg-port {status = "okay";};u2phy0_host: host-port {phy-supply = <&vcc5v0_host>;status = "okay";};
};/* Configurate and Enable Type-C0 USB 3.0 Controller */
&usbdrd3_0 {extcon = <&u2phy0>;
//  extcon = <&fusb0>; // no using [fusb302]status = "okay";};&usbdrd_dwc3_0 {//  dr_mode = "otg"; // cant run otg in 4-pin-hw : [USB-A].dr_mode = "host";phys = <&u2phy0_otg>, <&tcphy0_usb3>;phy-names = "usb2-phy", "usb3-phy";maximum-speed = "high-speed";status = "okay";
};

rk3399_android7.1 USB Type-A的配置相关推荐

  1. USB TYPE -A -B -C 接口

    1. USB TYEP -A 普通电脑上那个USB口,称为A口母座,对应的插头,称为A口公头,A口主要的作用是作为数据及电源的下行端口,即拥有A口母座的设备,在电源上来说,属于供电设备**(TYPE- ...

  2. USB Type A/B/C基本知识和各版本区别

    不知道哪个是来源, 之中一个:  http://www.3lian.com/edu/2015/05-11/211795.html 自从苹果不久前在新MacBook上破天荒的使用单一数据接口USB Ty ...

  3. USB Type C规范详解

    USB Type C规范详解 目前USB Type C接口应用非常广泛,可以传输DP,USB,PCIE,音频等信号,已经不是纯粹的用来传输USB信号了,即USB Type C摆脱了和USB的从属关系, ...

  4. USB TYPE C接口拆解及定义、USB3.1标准说明

    FROM:http://www.lulian.cn/article-279-cn.html USB TYPE C接口以其纤薄.正反可插拔等诸多优势,得到了广泛运用,我们先看看USB TYPE C接头拆 ...

  5. USB Type A/B/C的区别和基本知识

    USB 1.0 USB规格第一次是于1995年,由Intel.IBM.Compaq.Microsoft.NEC.Digital.North Telecom等七家公司组成的USBIF(USB Imple ...

  6. 关于USB Type A/B/C的区别和基本知识

    USB 1.0 USB规格第一次是于1995年,由Intel.IBM.Compaq.Microsoft.NEC.Digital.North Telecom等七家公司组成的USBIF(USB Imple ...

  7. typecpd协议规范 C语言,谁能详细介绍USB Type C各个P位的作用,如Vconn和Vbus和CC的具体作用...

    满意答案 fdga25688 2020.05.27 采纳率:59%    等级:6 已帮助:205人 VBus:总线电源,USB PD协议可配置电压,最大20V 5A GND:地线 TxRx:Tx1 ...

  8. USB Type C数据线接线方式、工作原理

    USB Type C近段时间很火,现阶段市场真正带有TYPE C接口设备少(主要有MACBOOK,谷歌Chromebook Pixel,乐视手机,诺基亚N1等),而真正符合USB 3.1  TYPE ...

  9. linux以太网连接树莓派,树莓派 Zero USB/以太网方式连接配置教程,

    树莓派 Zero USB/以太网方式连接配置教程, 树莓派 Zero 之所以成为一款非常棒的单板计算机并不全因为它小巧的尺寸和便宜的价格,还得益于它便捷.易用的特性.在加装了 Zero Quick P ...

  10. USB C端口说明-USB Type C的不同之处和速度

    You might have heard about USB Type C - after all, USB ports are pretty ubiquitous in the world of t ...

最新文章

  1. 8.Spring Security 权限控制
  2. mysql update 有中文_MySQL Update语句一个非常经典的“坑”
  3. Erlang Start![3]
  4. Spark 调优之数据倾斜
  5. has no attribute 'xw_plus_b'
  6. python语言入门n-python语言入门之字符串的一些用法
  7. WSUS服务器的建立以及客户端发布
  8. C++ 异常的详细介绍
  9. __va_rounded_size
  10. python身份证号掩盖出生日期的代码_利用Python制作全国身份证号验证及查询系统!就问你吊不吊!...
  11. 多线程篇三:线程同步
  12. css border 圆角气泡案例
  13. Java开发笔记(一百二十八)Swing的图标
  14. C语言程序设计实验报告——实验五
  15. opencontrail 2.20
  16. ssm基于微信平台的牙科就诊信息管理系统的设计与实现 毕业设计源码211157
  17. win10系统安装CH340驱动
  18. 关于微信录音的坑-Linux服务器上进行音频格式的转换
  19. 运用BFS算法实现北京地铁路线换乘系统
  20. 技术升级 | 戴着口罩也能识别人脸啦

热门文章

  1. C#程序关闭时怎么关闭子线程
  2. 困惑度 | NLP中对困惑度感到困惑?
  3. NAACL2021 | 苏大阿里提出:一种统一的基于跨度的意见挖掘方法
  4. 【ACL2020】五篇与文本理解相关的论文
  5. 深度学习需要掌握的 13 个概率分布
  6. 一文详解自然语言处理任务之共指消解
  7. 【硬核课】最新《图卷积神经网络GCN》2020概述,76页ppt,NTU-Xavier Bresson,纽约大学深度学习课程...
  8. 【数学基础】深度学习必须掌握的 13 种概率分布
  9. 【数据集】机器学习数据集汇总(附下载地址)
  10. 学界 | NLP年度盛宴EMNLP/CoNLL 2018最精彩论文精选(摘要+评论)