本文档旨在记录USB2.0 HS模式初始化过程,使用Xilinx的USB2.0 控制器。
参考文档:
- Xilinx官方文档pg137
- USB3300 ULPI接口以及寄存器
初始化过程
序号 | USB控制器动作 | 等待回复 |
1 | USB控制器复位之后,向ULPI发送复位:0x5写0x20 (附录1) | 等待USB控制器被使能 |
2 | USB控制器使能,向ULPI 0x4写0x41(phy in normal operation,FS mode),0xa写0(控制器不支持OTG) | 等待Vbus > Vsession(host接入); host接入,ULPI会返回0x48(附录2) |
3 | host接入后,USB控制器向0x4写0x45,上拉DP。(附录3) | 等待Vbus >Vbus_vld,且DP上拉成功,ULPI返回0x4d (DP上拉)。 |
4 | DP上拉2ms后,控制器需要检测到host再将DP下拉(复位操作,SE0),ULPI返回0x4c | |
5 | USB控制器监控到Host的复位(0x4c),2.5us后(至少),向ULPI 0x4写入0x54;向ULPI发送txcmd 0x40,紧跟数据0。PHY开始发送Chirp K。持续时间大于1ms,小于7ms。 | host收到chirp K 后,在100us内做成回应。短暂的回到SE0阶段后,开始发送Chirp K/J码,至少重复3次码。ULPI 返回0x4e/0x4d |
6 | USB控制器检测到3对以上的chirp K/J码后,500us内,向ULPI 0x4写入0x40,进入HS模式。 |
附USB上电波形截图: