Arduino由于PC高速USB通信

时间:2017-02-06 17:10:40

标签: embedded usb driver microcontroller arduino-due

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

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

所以,我做了一些家庭工作,发现基于USB的设备根据他们的工作有不同的分类。我想知道是否存在速度至少为2 Mbit / sec的高速协议我可以在USB上使用来从Due到我的PC的数据,如果有相同的驱动程序我可以使用在我的Windows PC上成功捕获高速数据 - 任何建议都会非常有用。

提前致谢!

萨勃拉曼尼亚

1 个答案:

答案 0 :(得分:1)

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

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

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