最近调试ST的329板子的USB模块,外接了一个USB Phy,刚好学习了一下这个USB phy 。
SMSC的USB334X 提供了 USB2.0高速传输的物理层的解决方案. 芯片的结构图如下:
OVP:过电保护
ESD Protection:静电保护
OTG: otg 模块
Hi-speed USB Transeiver:高速USB 传输模块
PLL: 振荡电路产生时钟
ULPI Registers : ULPI寄存器和状态机
以及 集成电源管理和ULPI接口
引脚的介绍:
ID:接到USB 连接器,作为该引脚为高时作为device,该引脚为低时作为host
VBUS:输入,5V电压, 电压来自于USB 连接器
DP:输入输出,USB连接器的D+引脚 ,接到USB 连接器,高速或全速设备该引脚被拉高,DM被拉低。 反之亦然。
DM:输入输出,USB连接器的D-引脚 ,接到USB 连接器
RESET: reset引脚,接到mcu
VBAT: 输入3.3-5.0V的电压
CLKOUT:输出60MHZ 的ULPI 时钟
REFCLK:输入60MHZ 的ULPI 时钟
VDD18:输出1.8V的电压
VDD33:输出3.3V的电压
RESETB: 输入,当拉低的时候VDD18和VDD33不输出电压,拉高的时候作为一个正常的ULPI设备
DATA1-DATA7:输入输出,双向数据线,连接到MCU. MCU通过DATA1-DATA7 向PHY
STP: 输入,来自于MCU,当总线上有数据发送时该引脚被拉低,当总线上最后一个数据发送结束时被重新拉高
DIR:输出,输出到MCU,控制数据的传输方向,当有数据从PHY输入到link(MCU)时,引脚被拉高。 没有数据的时候或者MCU有数据传到PHY时,被拉低。同时监听总线上来自link的命令
NXT: 输出,控制数据传输,表示当前的数据PHY端已经接收到了。
检测:
1.上电之后检测,VDD33、VDD18有输出,CLKOUT有输出
2.判断高速低速设备,检测 DP、DM的电压
3.判断host、device,检测 ID的引脚电压