2

我正在开发一个使用 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 位/秒的高速协议,我可以在 USB 上使用从 Due 到我的 PC 的数据,并且,如果有一个等效的驱动程序我可以使用在我的 Windows PC 上成功捕获高速数据 - 任何建议都会非常有帮助。

提前致谢!

亚布拉曼尼亚人

4

1 回答 1

2

Arduino Due 的原生 USB 端口支持高速 USB (480 Mbps),默认情况下,它会在计算机上显示为 USB 虚拟 COM 端口。这是一个虚拟串行端口,因此您可以在 USB 驱动程序允许的范围内尽可能快地发送数据,并且您不受 COM 端口的虚拟“波特率”的限制,这是一个无关的设置。我认为虚拟 COM 端口对您来说足够快,您应该在做更复杂的事情之前尝试一下。

要使用此端口,请SerialUSB在您的 Arduino 程序中使用。该对象具有与 相同的接口Serial。如果您安装了 Arduino IDE 或者您正在运行 Windows 10,那么您应该已经有它的驱动程序。

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

于 2017-02-06T20:12:27.370 回答