从USB HOST到OTG:深入理解RK3568的USB双角色设计及设备树配置差异
在嵌入式系统开发中,USB接口的设计与配置往往是硬件与软件协同工作的关键环节。RK3568作为一款广泛应用于智能设备的主控芯片,其USB子系统支持HOST、OTG等多种工作模式,为开发者提供了灵活的连接方案。但正是这种灵活性,也带来了配置上的复杂性——不同的模式选择会直接影响物理层连接、时钟树配置、中断映射乃至电源管理域的使用方式。
1. USB基础架构与RK3568的实现特点
USB协议从诞生之初就采用了主从式架构,这种设计在USB 2.0时代被OTG(On-The-Go)技术所扩展。RK3568芯片内部集成了两个独立的DWC3控制器,分别对应usbdrd30(USB Dual Role Device)和usbhost30节点,这种分离设计反映了芯片对USB多角色支持的硬件基础。
关键差异点对比:
| 特性 | usbdrd30 (OTG模式) | usbhost30 (HOST模式) |
|---|---|---|
| 物理层连接 | u2phy0_otg + combphy0_us | u2phy0_host + combphy1_usq |
| 时钟配置 | CLK_USB3OTG0_REF系列 | CLK_USB3OTG1_REF系列 |
| 中断映射 | GIC_SPI 169 | GIC_SPI 170 |
| 电源域 | RK3568_PD_PIPE | RK3568_PD_PIPE |
| 典型应用场景 | 可切换角色的移动设备 | 固定为主机的嵌入式设备 |
在实际项目中,我们遇到过因PHY配置不当导致的枚举失败问题。例如,当dr_mode设置为"otg"
解锁全文
加入我们的会员,获取最新、最热、最精彩的开发者技术内容