支持作者,点击京东购买作者创作书籍《Yocto项目实战教程:高效定制嵌入式Linux系统》
USB(Universal Serial Bus)是现代嵌入式系统和通用计算平台中的关键通信接口,它以其即插即用、统一协议、多种速率等级和强大的主从控制能力成为设备通信的核心。本文聚焦 USB 的硬件原理与电气架构,旨在为工程师提供准确、完整的底层知识体系。
一、USB 接口与物理连接
1.1 USB 接口类型
USB 接口主要分为以下几种:
类型常见形态用途USB-A主机侧接口,矩形台式电脑、嵌入式主板 Host 口USB-B设备侧接口,方形打印机、工业控制设备Micro-USB / Mini-USB小型设备接口老式手机、嵌入式板卡USB-C可正反插、支持 OTG/PD新一代手机、开发板、笔记本
1.2 USB 线缆结构
VBUS(红线):主机供电,5VGND(黑线):地线D+(绿线) / D-(白线):差分数据线ID(可选):Micro-USB OTG 模式识别
二、USB 电气与信号传输
2.1 差分信号与 NRZI 编码
USB 使用 D+/D- 进行差分传输,有效提高抗干扰能力,采用 NRZI 编码 和 位填充(bit stuffing) 技术。
Full-Speed(USB 1.1):12 MbpsHigh-Speed(USB 2.0):480 MbpsSuperSpeed(USB 3.0/3.1):5 Gbps / 10 Gbps,新增 TX/RX 对(USB 3.x 不再复用 D+/D-)
2.2 上拉电阻与速度识别
USB 设备在插入总线时,会通过 D+ 或 D- 上拉电阻向主机宣告其速率:
D+ 上拉 → Full Speed(12 Mbps)D- 上拉 → Low Speed(1.5 Mbps)SuperSpeed 通过额外引脚检测
三、USB 控制器与协议机制
3.1 USB 控制器结构
SoC 中的 USB 控制器是 USB 子系统的核心,主要分为:
Host Controller:控制 USB 总线(如 EHCI、xHCI、DWC3)Device Controller:响应主机控制(如 ChipIdea、DWC2)Dual Role Controller:支持 OTG 动态切换(如 NXP i.MX 的 USB OTG)
3.2 Endpoint 与 Pipe
Endpoint(端点):USB 设备上的逻辑通道,如 ep0(控制端点)Pipe(管道):主机与端点之间的通信通道,由主机控制
每个 USB 设备有最多 16 个端点(IN/OUT 各 16),每个端点具有独立的 FIFO、缓冲控制和状态寄存器。
四、USB 架构:主机与设备模型
4.1 主从结构(Host-Device)
主机(Host) 负责:
供电(VBUS)轮询枚举设备控制总线传输 设备(Device) 负责:
上电后通过上拉电阻被主机检测回复主机控制请求通过 Endpoint 进行传输
4.2 USB 枚举过程
主机检测新设备连接(上拉电阻变化)向设备地址 0 发送 GET_DESCRIPTOR分配设备地址请求设备配置,设置端点驱动匹配成功,启动通信
五、OTG 硬件机制与角色切换
OTG(On-The-Go)是一种允许 USB 设备在 Host/Device 之间动态切换的标准,其硬件基础依赖:
ID 引脚:在 Micro-USB 中决定角色(接地为 Host,悬空为 Device)VBUS 检测:检测供电状态判断当前角色OTG 控制器:支持 SRP(Session Request Protocol)和 HNP(Host Negotiation Protocol)角色切换
OTG 的核心应用场景包括:
手机与 USB 外设(如 U 盘)嵌入式板卡进入烧录模式(如 NXP i.MX 使用 UUU 工具)
六、USB 硬件调试与识别
在 Linux 系统中,可以通过如下工具进行硬件识别与调试:
lsusb # 查看所有 USB 设备
lsusb -t # 查看 USB 层级与速度
usb-devices # 查看每个设备详细信息
dmesg | grep usb # 查看 USB 连接日志
常见调试问题:
问题原因无法识别设备控制器未初始化 / PHY 电源未打开枚举失败VBUS 电压不足 / 设备端未上拉SuperSpeed 无法识别线缆不兼容 / USB3.0 PHY 驱动未加载
结语
USB 的硬件结构看似简单,实则隐藏着丰富的控制逻辑、电气机制与协议设计。从控制器选择、PHY 配置,到主从角色转换,每一个环节都对系统稳定性有重要影响。理解 USB 硬件原理,是掌握 USB 驱动开发与系统设计的第一步。
下一篇将进入 USB 的软件结构与驱动开发框架,解析 USB 栈的注册、匹配、通信与用户态接口实现。
支持作者,点击京东购买作者创作书籍《Yocto项目实战教程:高效定制嵌入式Linux系统》