
物理层握手的波形由 USB PHY 和主机控制器硬件完成。软件只负责把 PHY 打开并在检测到连接后启动一次端口复位然后读结果。硬件做什么设备插入后D 上拉把线拉成 J 态。PHY 检测到这个电平置CCS和CSC产生端口变化中断。软件把PORTSC1.PR置 1 之后后面整段复位都在控制器内部进行驱动 SE0检测设备的 Chirp K主机回应 KJ 序列接上 45 Ω 高速终端硬件自己把PR清掉并写入PE和PSPDi.MX RT1050 的主机栈就是这样写的。USB_HostEhciPortChange()里只做了置位PR、等待PR变回 0、再读PSPD中间没有去翻转 D / D−。软件必须做的事握手不会自己开始。软件要先完成这些准备打开 USB PHY 的 480 MHz PLL 和控制器时钟给 PHY 上电PWD0写入发送电流校准置PTW匹配 16-bit UTMI打开端口电源PP收到连接中断后去抖再置PR复位结束后软件根据PE和PSPD决定后面按高速还是全速枚举。PE0时总线上没有可用链路描述符请求发不出去。和这两块板的关系UG 和 OT 跑的是同一套流程。UG 上硬件把 Chirp 做完PE1、PSPD0x2。OT 上软件同样发起了复位硬件结束后PE仍是 0、PSPD仍是 0。所以 OT 的失败点在 PHY 完成握手时的电气结果不在软件去拼 Chirp 波形。软件能做的是再次置PR或给摄像头断电再来一次。握手时序本身改不了。