我最初的假设是它与布局不当,ESD,电涌或任何其他您可以想到的电气问题有关。我把所有的玩具拿出来开始测量,确定范围,切割痕迹,添加组件,移除组件,但无论我做了多少,我总能以相同的出现频率复制问题。
我决定嗅探USB流量,看看我能找到什么,但设备驱动程序完全不符合我的专业知识,我无法解释日志。我一直在谷歌搜索我看到的许多东西,他们在两个日志中的差异是显而易见的,但我仍然无法确定这是一个有故障的设备驱动程序,一个错误的Windows usbhub.sys驱动程序,或错误在TI芯片内部。在所有可能性中,我认为故障设备驱动程序更有可能,但在我联系我的设备提供商之前,我想更好地了解发生了什么。
那里的任何USB专家都可以查看这些日志并告诉我你可以从中解释什么吗?我捕获了完整的USB堆栈,因此有很多批量传输消息,但是如果你向下滚动大约1.8秒,你会发现魔法发生了。
https://www.dropbox.com/s/epdhsf9lcox5ci7/Full%20Stack%20Logs.zip
问题: 当从Hub中拔出设备时,集线器将重置并重新枚举其自身,并因此重新枚举连接到它的设备。我检查了集线器中的复位线并且没有断言,VCC也没有下降任何可能导致电气故障的电平。
我还检查了ESD,浪涌,过电流,过压和欠压问题,但没有发现任何问题。我的电路板上有保护设备,以及数据对的EMI滤波器。所有其他设备都能正常工作,如果我不拔掉设备,我的所有软件工具和商业软件都可以正常运行。只有当您拔掉(大约5%的拔出插头)我们才会出现此故障。
我可以从日志中看到“Host”在尝试SYNC_RESET_PIPE_AND_CLEAR_STALL并且结果不一致后发送“RESET_PORT”命令/调用(或其他任何调用)。我从日志中注意到,这个调用不是在OK日志上进行的,只是要求删除设备。 RESET_PORT呼叫是HUB上的问题,这让我觉得设备驱动程序出现问题。
HUB IC是标准TI部件,已经批量生产。我的原理图遵循他们的指导原则,我们的电路板布局是由南加州的一家设计公司制作的,他们非常清楚USB设计良好实践的重要性。