0

使用 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)捕获串行数据。

4

0 回答 0