带有 Arduino 的高速计算机接口

电器工程 Arduino 串行 波特率
2022-01-18 08:02:02

我正在计划一个使用 Arduino 的项目,该项目涉及处理来自主机的大量请求,而标准的 115200 串行最大波特率是不够的。如果可能的话,我希望能够获得 1Mbps 全双工,但可以接受 400Kbps+ 全双工。我使用的是 Arduino Due,所以它应该能够处理更高的通信速度。

有没有办法显着提高串行波特率,或者在以更高速度与计算机连接方面我可以选择第二种选择吗?

3个回答

绝对有可能使用 Arduino 达到 Mbps 范围,尤其是使用您的 Due。串行监视器仅支持高达 115200 的波特率,但您可以使用单独的终端窗口,将波特率设置为您喜欢的任何值。

有关更多信息,请参阅Arduino 论坛上的此线程。

在设置方面,在 Arduino 上它Serial.begin(1000000);和那个程度一样简单。这完全取决于您要与之通信的设备的设置以及它可以处理的内容。

我会考虑为正在执行 USB 接口的 Atmega16u2 编写自定义固件。该芯片可以使用全速 USB(信号速度高达 12 Mbit),并且该芯片的 SPI 输出端口可在 ICSP 接头上方便地使用。将其连接到 Arduino 的 SPI 输入(也可在其 ICSP 接头上使用),您可以以 4 Mbit/s(每位 4 个 CPU 时钟)运行 SPI。

mega(16u2 和 128)上的 Atmegas 可以以高达 2 Mbit/s 的速度运行其串行端口。如果您为 16u2 编写自定义固件,您还可以使用已经存在的异步串行 USART。

在这两种情况下,您可能会失去串行端口的可编程性,因此您必须使用基于 USB 的单独编程器。

LUFA 项目有很多示例程序和有用的库,用于在 Atmega 芯片上实际使用 USB。“libusb”是一个方便的库,可以直接与 USB 设备通信,而不必依赖串行仿真。

这里有一些可能有用的结果