您好!
我已经基于 TUSB8041A 创建了一个运行良好的 USB 集线器设计。 集线器显示在 USB 总线上、当我将 USB 高速设备连接到它时、它们会以5Gbit/s 的速度显示并按预期工作 到目前为止、一切都很好。
在设计中、我还需要一个"键盘"、以便在按下硬件按钮时触发某些键击。 这是以 STM32F103C8T6的形式实现的、USB HID 固件以 USB 全速运行。 我已在试验电路板上以 BluePill 电路板的形式(见图)和最小化的形式单独测试了此设计的"键盘"部分、 STM32F103C8T6焊接到分线板上、只需一个晶振/电容器+ D+线上的单个1.5k 上拉电阻器(见图)。 这两种设计都能完美工作。 在任何计算机(Windows、Ubuntu、OSX)上、它们只是显示为键盘并正常工作。 仍然很好。
问题是、当我将 STM32F103C8T6设计移至与 USB 集线器相同的电路板时、它将不再工作。 不仅如此、当 STM32F103C8T6键盘出现故障时、它还经常下拉 TUSB8041A 集线器。 有关发生的情况的 Unix 日志示例,请访问 :https://zerobin.no/?d14cd1e3e778e8e8#B8SyCLgnBcssc163t42Lq48GeBcvJP3EoHCMtx4bPF7Z
如果我切断集线器和 STM32F103C8T6之间的布线、集线器将正常工作。 然后、如果我焊接 Bluepill 试验板或 STM32F103C8T6分线板的 GND、DP 和 DM、它将完美工作。 没有任何错误。 始终启动并正常工作。
那么-我的问题是-什么会导致同一器件的更理想实施版本 (在具有差分匹配布线的同一 PCB 上的 STM32)出现故障、而非常不理想的设计(使用不同长度的可怕质量的电线、以及糟糕的试验电路板连接、 焊接到 USB 集线器板上)可以完美地工作? 如果 在同一 PCB 上实现 USB 器件、TUSB8041A 是否有时序要求会中断? 连接是否"太好"? 这是否是计时问题? ( STM32F103C8T6器件将在 TUSB8041A 之前的几毫秒启动、因为只有集线器具有时序要求)
关于通信:使用示波器进行测试表明、STM 器件只会偶尔响应集线器发送的复位。 集线器发送复位信号、然后 STM 仅偶尔做出响应。 如果不是因为测试表明同一器件在实际的 PBC 上(而是在试验电路板上)能够正常工作、那么我会说这是 STM 的故障。 这是一个显示 DP/DM https://www.youtube.com/watch?v=ZxSBaxUTLRI 上信号的视频
我已经尝试了很多天和晚上找到解决方案、我已经用尽了我的想法池。 我迫切需要有更多经验的人提供帮助。
(附带原理图+试验电路板设置和采用 STM 的 PCB 图片)