gpt4 book ai didi

arduino - 计算机和微 Controller 之间延迟最低的通信方法是什么?

转载 作者:行者123 更新时间:2023-12-02 14:32:44 24 4
gpt4 key购买 nike

我有一个项目,需要在计算机(Windows + Linux + MacOSX)和微 Controller (arduino 或 stm32 或任何东西)之间实现尽可能低的延迟(最好在 1-100 微秒范围内) )。

我强调,它不仅要快,而且要低延迟(例如,与月球的快速通信将具有低延迟)。

目前我尝试过的方法是通过 USB 串行或通过 USB 的 HID 数据包。我在不到一毫秒的时间内得到结果。我的测量方法是往返通信,然后除以二。这没关系,但我会更高兴能有更快的东西。

编辑:这个问题似乎很难回答。我发现的最佳解决方法是同步计算机和微 Controller 的时钟。同步确实需要通信。在下面的过程中,dt是半个往返,sync是时钟之间的差异。

t = time()
write(ACK);
read(remotet)
dt = (time() - t) / 2
sync = time() - remotet - dt

请注意,此同步的不精确度最多为dt。最快的通信 channel 非常重要,但我对精度有一个估计。

另请注意与不同系统上时间戳差异相关的技术细节(Linux 上基于纪元的 us/ms,自 MCU 在 Arduino 上启动以来的 ms/us)。

注意Arduino上的时钟移位。经常同步会更安全(我的例子中的每一项措施)。

最佳答案

USB Raw HID 具有破解的 8KHz 轮询率(125us 轮询间隔)与 Teensy 3.2(或更高版本)相结合。 Mouse overclockers已经实现了 8KHz 轮询率和低 USB 抖动,Teensy 3.2(Arduino 克隆)能够以 slightly modified USB FTDI driver 实现 8KHz 轮询率。在PC端。

除此之外,您还需要更好的,您现在正在考虑 PCI-Express 并行端口,通过数字引脚直接向并行端口上的引脚发送低延迟信号。它们必须是真正的并行端口,而不是通过 USB 层。千兆赫级 PC 上的 DOS 应用程序经过测试,可以通过并行端口引脚信号获得低于 1us 的能力(1.4Ghz Pentium IV),但如果您编写虚拟设备驱动程序,则可能可以在 Windows 中获得低于 100us 的能力。

使用提高的优先级和关键部分,最好是非垃圾收集语言,最少的后台应用程序,并且在关键循环上基本上消耗 100% 的 CPU 核心,并且您绝对可以可靠地实现 <100us。不是 100% 的时间,但肯定在五个九的范围内(甚至可能比这个好得多)。如果你能容忍这样的畸变。

关于arduino - 计算机和微 Controller 之间延迟最低的通信方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41987430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com