☰
USB的物理层握手
2026/10/9 2:45:34 网站建设 项目流程

物理层握手的波形由 USB PHY 和主机控制器硬件完成。软件只负责把 PHY 打开,并在检测到连接后启动一次端口复位,然后读结果。

硬件做什么

设备插入后,D+ 上拉把线拉成 J 态。PHY 检测到这个电平,置CCS和CSC,产生端口变化中断。

软件把PORTSC1.PR置 1 之后,后面整段复位都在控制器内部进行:

  • 驱动 SE0

  • 检测设备的 Chirp K

  • 主机回应 KJ 序列

  • 接上 45 Ω 高速终端

  • 硬件自己把PR清掉,并写入PE和PSPD

i.MX RT1050 的主机栈就是这样写的。USB_HostEhciPortChange()里只做了置位PR、等待PR变回 0、再读PSPD,中间没有去翻转 D+ / D−。

软件必须做的事

握手不会自己开始。软件要先完成这些准备:

  • 打开 USB PHY 的 480 MHz PLL 和控制器时钟

  • 给 PHY 上电(PWD=0),写入发送电流校准

  • 置PTW,匹配 16-bit UTMI

  • 打开端口电源PP

  • 收到连接中断后去抖,再置PR

复位结束后,软件根据PE和PSPD决定后面按高速还是全速枚举。PE=0时总线上没有可用链路,描述符请求发不出去。

和这两块板的关系

UG 和 OT 跑的是同一套流程。UG 上硬件把 Chirp 做完,PE=1、PSPD=0x2。OT 上软件同样发起了复位,硬件结束后PE仍是 0、PSPD仍是 0。

所以 OT 的失败点在 PHY 完成握手时的电气结果,不在软件去拼 Chirp 波形。软件能做的是再次置PR,或给摄像头断电再来一次。握手时序本身改不了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询