Arduino 由于 PC 高速 USB 通信

Arduino Due to PC High Speed USB communication

我正在从事一个使用 Arduino Due(微控制器 ATSAM3X8E)的项目。我的目标是能够实时跟踪我在固件中使用的一些关键变量的值。事实上,我需要绘制变量值随时间的变化。

为此,我决定通过本机 USB 端口将数据发送到我的 PC。我遇到的实时限制是我需要在 0.1 毫秒内发送 20 个变量的值(每个变量长 8 个字节)。 Arduino Due 上有一个原生 USB 端口可用,它连接到芯片的 USB 外设。我尝试通过在 USB 设备模式下设置 Due 来使用 UART over USB。我只能使用串行 (UART) 通信达到 115200 波特的速度(任何更高的速度都不允许 Due 或我的主机 PC 正确发送数据)。

因此,我做了一些家庭作业,发现基于 USB 的设备根据其功能有不同的分类。我想知道是否有速度至少为 2 M bits/sec 的高速协议,我可以在 USB 之上使用数据从 Due 传输到我的 PC,并且,如果有等效的驱动程序,我可以在我的 Windows PC 上使用以成功捕获高速数据 - 任何建议都会非常有帮助。

提前致谢!

亚伯拉曼尼亚人

Arduino Due 的原生 USB 端口支持 high-speed USB (480 Mbps),默认情况下它会在计算机上显示为 USB 虚拟 COM 端口。这是一个 虚拟 串行端口,因此您可以按照 USB 驱动程序允许的速度发送数据,并且不受 COM 端口的虚拟 "baud rate" 的限制,这是一个无关紧要的设置。我认为虚拟 COM 端口对你来说足够快,你应该在做更复杂的事情之前尝试一下。

要使用此端口,请在您的 Arduino 程序中使用 SerialUSB。该对象具有与 Serial 相同的接口。如果你安装了 Arduino IDE 或者你是 运行 Windows 10.

你应该已经有它的驱动程序了

请注意,USB 虚拟 COM 端口通常使用 USB 批量端点,这不保证任何特定的延迟或吞吐量。如果您的计算机正忙于与总线上的其他设备通信,您获得的吞吐量可能会比您希望的要少,但这里有很大的误差范围,所以我认为这在实践中不会成为问题。如果你想安全起见,只需确保你可以在设备端缓冲几毫秒的数据,这样你就不会丢失任何数据。您可能需要查看 Arduino 核心代码的内部结构才能了解其缓冲区有多大。