首页 > 解决方案 > 最大化 Arduino Nano 33 BLE Sense 的 Serial.write() 数据传输速度

问题描述

如果您想在没有正确补丁的情况下将以下草图作为 Serial.flush 块永远运行,请按照本讨论中概述的步骤进行操作。当前的 Arduino 版本实现了这些更改,但截至撰写本文时(2021 年 11 月 12 日),我们无法从 Board Manager 下载新版本...

在 Serial.flush 工作后,我使用以下草图尝试测量 Nano 33 BLE Sense 和 Portenta H7 的 USB 虚拟串行端口的数据传输速率,分别为 11199 字节/秒和 19620 字节/秒:

const byte BYTE_TO_SEND = 170; //b'10101010'.
const unsigned long NUMERATOR = 1000000000;

void setup(){
  Serial.begin(115200); //Does nothing on the nano 33 ble sense.
  while (!Serial); //Wait for serial port to connect. Needed for native USB on nano 33 ble sense.
}
  
void loop(){
  unsigned long startClock = micros();
  for (int i = 1000; i > 0; i--) {
    //Serial.write(BYTE_TO_SEND); //11199 bytes/second on nano33blesense.
    Serial.write(BYTE_TO_SEND); //19435-19620 bytes/second on portenta h7.
    Serial.flush();
  }
  unsigned long endClock = micros();
  
  unsigned long bytesPerSecond = NUMERATOR / (endClock-startClock);
  Serial.println("");
  Serial.print(bytesPerSecond);
  Serial.println(" bytes/second");
  while(1);
}

我对这些结果感到失望):来自Arduino 论坛上这篇较早帖子的人用 Arduino Leonardo 进行了类似的速度测试,测得 39258 字节/秒!关于如何获得更快或希望更快的速度的任何想法?

或者测量策略有问题?

标签: arduinoserial-portdata-transferbaud-ratearduino-nano

解决方案


推荐阅读