我设计了一个电路如附件所示。
发现有如下问题:插入USB3.0的U盘,发现有不识别的现象,即U盘插入后主机没有任何反应。大概开关机实验10次就会有一次出现这个问题。
具体表现为开机之后如果第一次插入没反应后续再怎么拔插都没反应,如果开机后第一次插入可以正常识别,后续拔插都会比较正常。
经过反复测试发现如果USB的电源一直是打开状态就不会出现这个问题。
感觉像是设备插入枚举过程出现问题,我看到TUSB1046的0x22地址的寄存器好像有相关设置位。
我不知道这些寄存器是否可以解决这个问题,及这个问题要改那个参数?
Kailyn Chen:
您好,电源一直开着便没有这个问题,开关机频繁便出现问题,我想还是要注意下开机时序, 参考datasheet中Figure 17. Power-Up Timing。 用示波器测量下,时序是否满足。应该不是配置的问题。
peng11533:
回复 Kailyn Chen:
CPU和PCIE转USB的控制器的开机时序是没有问题的。因为PCIE转USB控制器有两个USB3.0端口。一个USB端口做成TYPE A的接口一直供电,这个接口一直工作正常。另外一个接口做成TYPC接口,这个接口才有上述问题,错误应该至于TYPE C部分实现有关系。
我们的控制流程如下,CPU通过I2C总线与PD控制器进行通讯,然后再通过I2C总线控制TUSB1046进行信号切换。即:
TYPE C插入U盘->PD控制器侦测TYPE C方向电源等信息->控制负载开关对USB进行供电->控制TUSB1046进行信号切换
在此过程中会不会因为中间环节占用时间太长,导致对USB设备供电的时间延迟太多,以至于USB的枚举不成功。
是否可以通过控制TUSB1046使USB的枚举方式改变达到不出错的目的?
Kailyn Chen:
回复 peng11533:
您好,我想您的猜测是正确的,也就是说当TUSB1046 还没有上电的时候,PD已经发送了I2C 命令来控制TUSB1046. 或者说负载开关此时已经和TUSB1046建立了连接。
您的这个问题和这个帖子相似,https://e2e.ti.com/support/interface/f/138/t/844401?tisearch=e2e-quicksearch&keymatch=TUSB1046%20%20Type%20C
您看下工程师给的建议: Disable DP auto entry found within register 0x51, and have the EC send the AMEn command once the TUSB1046 is powered up
peng11533:
回复 Kailyn Chen:
感谢您的帮助!
现在我设计的电路是TUSB1046一直是供电状态。我说的供电是指给USB的设备进行供电。
我看到TUSB1046手册里的8.6.8节,有关于链路训练的相关寄存器,我对这些不是很了解。是不是可以通过这几个寄存器解决这个问题呢?