首页 文章

Arduino由于PC高速USB通信

提问于
浏览
0

我正在开发一个使用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 回答

  • 1

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

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

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

相关问题