使用 UDOO Quad,我试图通过串行端口尽快将数据从 Atmel SAM3X8E(Arduino 端)推送到 Freescale i.MX 6(Linux 端)。目前,我限制在大约 10,000 字节/秒,这是合理的,因为串行端口配置为每秒 14,400 字节(115,200 位)。有谁知道如何提高串行连接的速度?或者,如果除了串行之外还有其他方法可以将数据传递到 ARM 处理器,我可以使用它。我的 Arduino 草图如下。实际上,发送了“无法足够快地写入”。如果从 Serial.println("012345678901") 中删除了两个字符,则通过。我正在使用内置的 Arduino 串行端口监视器(工具 -> 串行监视器)。
unsigned long sample_period = 1000; //micro seconds.
unsigned long current_time = 0;
void setup() {
Serial.begin(115200); //115200 bits per sec, 14400 bytes per sec
current_time = micros();
}
void loop() {
int wait_count = 0;
while(micros() - current_time < sample_period) {
wait_count++;
}
if(wait_count == 0) {
Serial.println("Unable to write quickly enough");
}
current_time = micros();
Serial.println("012345678901");
}
编辑:在阅读了下面 Sendhikumar 的评论后,我更加系统化并浏览了termios.h中的所有频率。我发现每秒 576000 位是有效的,而我的新数据速率是每秒 56,000 字节。如果可能的话,我仍然想要更快的速度。内置的 Arduino 串行监视器不支持此频率,所以现在我正在使用自定义 C++ 程序(基于www.tldp.org/HOWTO/Serial-Programming-HOWTO/x115.html)捕获串行数据。