使用UDOO Quad,我试图尽快通过串口将数据从Atmel SAM3X8E(Arduino端)推送到Freescale i.MX 6(Linux端)。目前,我被限制在大约10,000字节/秒,这是合理的,因为串行端口配置为每秒14,400字节(115,200位)。有谁知道如何提高串行连接的速度?或者,如果除了Serial之外还有其他一些方法可以将数据传递给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)捕获串行数据。