这个问题很难完全解释清楚,我提前道歉,但请阅读整个描述?谢谢。
注意:我发布这个主要是为了记录它,并且只征求有关如何识别需要更新以解决此问题的 Linux 映像部分的建议,也许有人会看到它并有一个解决方法。在使用串行 TTL 通信 30 多年的时间里,我从未见过这样的问题。
我有一个嵌入式板,出于安全/带宽原因无法轻松更新。小更新是可能的,但不是目标。除了修复它,我还想了解系统的哪一部分包含这些驱动程序以供我自己学习。我不只想解决问题,我想了解问题。
这块板有一个 USB 连接器,我可以插入不同的设备,它们通常都可以工作。例如键盘、wifi 适配器等。
当我想与外部串行设备(例如 Arduino 或其他)通信时,我常用的一种设备是串行 TTL 适配器。
当我将这些适配器直接插入 USB 端口时,它们可以正常工作。我通常使用 CP210x,最常用的是 CP2102 / 2104,但使用过 CH340s、FTDI 等……没问题。
最近我有一个应用程序,我同时需要两个 USB 设备,所以我添加了一个小型 USB 集线器。通过 HUB 插入串行 TTL 适配器后,我发现在大约 678uS 后发送的任何数据都被切断了。 (!?)
例如,一组示波器轨迹的屏幕截图以灰色显示了我直接插入串行 TTL 适配器时的轨迹,而蓝色轨迹显示了通过集线器插入时的轨迹。
如您所见,数据截断了中间字节。后来的测量表明,无论数据长度或波特率如何,时间都保持一致 +/- 大约 20uS。
这发生了 x3 集线器和 x3 适配器。
这不是 RS232,因此没有电荷泵故障。我监测了芯片上的电源,没有断电。
相同的集线器和适配器在插入 PC x2 操作系统(Ubuntu 20.04、Windows 11)时可以完美工作。
我的假设是嵌入式图像中的 USB 驱动程序有问题。同样,我无法更新它,除非以小的方式进行更新,而我的真正目标是无论如何都要了解这个问题。