USB
概述
本文档提供 RK3588 USB 模块的开发指南,目的是让开发者理解 RK3588 USB 控制器和 PHY 的硬件电路设计和软件 DTS 配置,以便开发者根据产品的 USB 应用需求进行灵活设计和快速开发。
芯片名称 内核版本 RK3588、RK3588S Linux-5.10 及以上版本
读者对象
本文档(本指南)主要适用于以下工程师:
- 技术支持工程师
- 软件开发工程师
- 硬件开发工程师
1. RK3588 USB 控制器和 PHY 简介
RK3588 支持 5 个独立的 USB 控制器,包括:2 个 USB 2.0 HOST 控制器,2 个 USB 3.1 OTG 控制器,1 个 USB 3.1 HOST 控制器。RK3588S 相比 RK3588 少了 1 个 USB 3.1 OTG 控制器。USB 控制器的具体类型如下表 1 所示,如果要了解更详细的 USB 控制器特性,请参考 RK3588 datasheet。
表 1 RK3588 USB 控制器列表
芯片 / 控制 USB | 2.0 HOST(EHCI&OHCI) | USB 3.1 OTG(DWC3&xHCI) | USB 3.1 Host(xHCI) |
---|---|---|---|
RK3588 | 2 | 2 | 1 |
RK3588S | 2 | 1 | 1 |
RK3588 支 持 7 个独立的 USB PHY,包括:4 个 USB 2.0 PHY,2 个 USB 3.1/DP Combo PHY,1 个 USB 3.1/SATA/PCIe Combo PHY。RK3588S 相比 RK3588 少了 1 个 USB 2.0 PHY 和 1 个 USB 3.1/DP Combo PHY。
表 2 RK3588 USB PHY 支持列表
芯片 / PHY | USB 2.0 PHY | USB3.1/DP ComboPHY | USB 3.1/SATA/PCIe ComboPHY |
---|---|---|---|
RK3588 | 4 [1 × port] | 2 | 1 |
RK3588S | 3 [1 × port] | 1 | 1 |
Note:
- 表格中,数字 N 表示支持 N 个独立的 USB 控制器和 USB PHY;
- 表格中,[1 × ports] 表示一个 PHY 只支持 1 个 USB port;
- 表格中,“EHCI&OHCI” 表示该 USB 控制器集成了 EHCI 控制器和 OHCI 控制器。“DWC3&xHCI” 表示该 USB 控制器集成了 DWC3 控制器和 xHCI 控制器;
- USB 3.1 Gen1 物理层传输速率为 5Gbps,USB 2.0 物理层传输速率为 480Mbps;
- USB 3.1/DP Combo PHY 支持 4 x lanes,可以同时支持 USB 3.1 + DP 2 x lanes;
- USB 3.1/SATA/PCIe Combo PHY 在同一时刻,只能支持一种工作模式,也即 USB3.1 与 SATA/PCIe 接口是互斥的;
表 3 RK3588 USB 控制器和 PHY 的连接关系
USB 接口名称 (原理图) | USB 控制器 | USB PHY |
---|---|---|
TYPEC0 | OTG0 (DWC3&xHCI) | USB3.1/DP Combo PHY0 + USB2.0 PHY0 |
TYPEC1 | OTG1 (DWC3&xHCI) | USB3.1/DP Combo PHY1 + USB2.0 PHY1 |
USB20_HOST0 | USB2.0 HOST0 (EHCI&OHCI) | USB2.0 PHY2 |
USB20_HOST1 | USB2.0 HOST1 (EHCI&OHCI) | USB2.0 PHY3 |
USB30_2 | USB3.1 HOST2 (xHCI) | USB3.1/SATA/PCIe ComboPHY2 |
RK3588 USB 控制器和芯片端 USB 传输数据的 pin 脚的对应关系如下表 4 所示。
表 4 RK3588 USB 控制器和 USB pin 脚的对应关系
USB 控制器 / Pin 脚 | RK3588 USB data pin |
---|---|
USB 2.0 HOST0 | USB20_HOST0_DP/USB20_HOST0_DM |
USB 2.0 HOST1 | USB20_HOST1_DP/USB20_HOST1_DM |
USB 3.1 OTG0 | TYPEC0_USB20_OTG_DP/TYPEC0_USB20_OTG_DM, TYPEC0_SSRX1P/TYPEC0_SSRX1N, TYPEC0_SSTX1P/TYPEC0_SSTX1N, TYPEC0_SSRX2P/TYPEC0_SSRX2N, TYPEC0_SSTX2P/TYPEC0_SSTX2N |
USB 3.1 OTG1 | TYPEC1_USB20_OTG_DP/TYPEC1_USB20_OTG_DM, TYPEC1_SSRX1P/TYPEC1_SSRX1N, TYPEC1_SSTX1P/TYPEC1_SSTX1N, TYPEC1_SSRX2P/TYPEC1_SSRX2N, TYPEC1_SSTX2P/TYPEC1_SSTX2N |
USB 3.1 HOST2 | USB30_2_SSTXP/USB30_2_SSTXN, USB30_2_SSRXP/USB30_2_SSRXN |
RK3588 USB 控制器和 PHY 的内部连接关系,以及对应的常见 USB 物理接口如下图 1 所示。
图 1 RK3588 USB 控制器和 PHY 的连接示意图
由图 1 可以看出:
- RK3588 最多可以同时支持 2 个全功能的 Type-C 接口,2 个 Type-A USB 2.0 接口,1 个 Type-A USB 3.1 only 接口(不向下兼容 USB 2.0);
- USB 3.1 OTG 控制器与 DP 控制器复用 USB3.1/DP Combo PHY,可组成全功能的 Type-C 接口,也可以拆分独立使用(如:常见的 Type-A USB 3.1 接口 + DP 接口[2 x lanes]);
- USB 3.1 HOST_2 控制器只支持 USB 3.1 功能,无法支持 USB 2.0(因为没有带 USB 2.0 PHY)。可以将 USB 3.1 HOST2 与 USB 2.0 HOST_0 或 USB 2.0 HOST_1 组合,作为一个完整的 Type-A USB 3.1 接口;
- USB 3.1/DP Combo PHY 只能支持 USB 3.1 Gen1,不向下兼容 USB 2.0。所以,它们在芯片内部设计时,实际是与 USB 2.0 PHY 组合,以支持完整的 USB 3.1 协议功能。其中,USB 3.1/DP Combo PHY0 固定与 USB2 PHY0 组合,USB 3.1/DP Combo PHY1 固定与 USB2 PHY1 组合;
- USB 3.1/SATA/PCIe Combo PHY 只能支持 USB 3.1 Gen1,不向下兼容 USB 2.0。并且,在芯片内部设计时,没有与 USB2 PHY 组合。因此,USB3 HOST_2 需要与 USB2 HOST_0/1 接口(二选一)组合,以支持完整的 USB 3.1 协议功能;
- RK3588 和 RK3588S 的 USB 模块区别是:RK3588S 相比 RK3588 少了一组 Type-C1 (即:1 个 USB 3.1 OTG controller + 1 个 DP controller + 1 个 USB3.1/DP Combo PHY + 1 个 USB 2.0 PHY);
需要注意的是,RK3588 USB 支持的接口类型并不局限于图 1 所描述的 Type-C/A USB 接口类型,而是可以支持所有常见的 USB 接口,包括 Type-C USB 2.0/3.1,Type-A USB 2.0/3.1,Micro USB 2.0/3.1 等,具体信息请参考 RK3588 USB 支持的接口类型。为了适配不同的 USB 电路设计和接口类型,Linux - 5.10 内核 USB 驱动已经做了软件兼容,开发者只需要根据产品的 USB 硬件电路,对 Linux USB DTS 进行正确配置,即可使能对应的 USB 接口功能。详细的 USB DTS 配置方法,请参考 RK3588USB DTS 配置。
2. RK3588 USB 支持的接口类型
RK3588 USB 可以支持如下图 2 常见的 USB 接口类型,产品设计时,可以根据实际的应用场景需求,灵活设计 USB 硬件电路,同时,只要对 Linux USB DTS 进行适配即可。
图 2 USB 接口类型
2.1 Type-C 接口类型
2.1.1 Type-C USB 3.1/DP 全功能接口
RK3588 Type-C0/1 可以支持全功能的 Type-C 接口功能 [1],如下图 3 所示,具体的硬件电路设计,请参考 Type-C USB 3.1/DP 全功能硬件电路。主要支持的功能如下:
- 支持 Type-C PD (需要配合外置 Type-C 控制器芯片)
- 支持 USB 3.1 Gen1 5Gbps 数据传输
- 支持 DP Alternate Mode
图 3 Type-C USB 3.1/DP 接口
图 4 Type-C 接口引脚定义