【问题标题】:Why 9600 data rate is used over other rates for Serial.begin()?为什么 Serial.begin() 使用 9600 数据速率而不是其他速率?
【发布时间】:2017-01-27 10:27:28
【问题描述】:

我正在开发 Arduino,并且正在使用与计算机进行通信的Serial.begin() 功能。现在,由于数据速率范围为 300...115200。 多数使用9600! 为什么会这样?它有什么意义

【问题讨论】:

    标签: arduino arduino-ide


    【解决方案1】:

    在过去的千年中,9600 波特一直是某些设备的标准。

    目前这个速度对于大多数情况来说已经足够了,所以他们坚持下去;许多设备默认使用 9600 波特。

    我个人最常使用串行进行调试。在 9600 波特下,它每秒可以打印超过 10 行,这超出了我的阅读能力。

    但是您可以记住,缓冲区限制为 64 个字符,当它已满时,arduino 将阻塞 serial.write 指令,直到缓冲区中有足够的空间。这就是为什么您会遇到波特率缓慢的情况。

    另一方面,您将在硬件串行上以 0.5M 的速度为 MCU 增加负担。使用软件序列,您可能会更快看到效果。

    我个人对使用 CH340 USB/Serial 的中文 nano 有一些问题;使用 pyserial 与 arduino 的 python 通信在超过 9600 波特的速度下是不可靠的。

    【讨论】:

      【解决方案2】:

      许多设备使用 9600 或 19200 波特,我猜人们只是复制值而不考虑它们,因此即使不再需要也继续练习。

      也就是说,maximum length of a serial cable 取决于您选择的波特率。更高的波特率需要更短的电缆。因此,如果您不需要更高的费率,只需保持较低的费率,例如 9600。

      【讨论】:

      • 带有 USB 连接的 Arduino 上的“串行电缆长度”仅在 MCU 和 USB-UART 芯片之间。
      • @gre_gor:Arduino 还具有 TX 和 RX 引脚,可提供“真正的”RS232 接口(尽管具有 TTL 电压电平)。如果您使用这些并不少见的引脚并将电缆连接到它们,则必须考虑电缆长度。但是,是的,如果您使用 USB 电缆,那么您可以使用任何您想要的速度,但会受到 USB 允许的最大长度的限制:)
      • 在 PC-Arduino 通信的情况下(就像 OP 询问的那样),我怀疑在大多数情况下是否考虑了电缆长度。即使 Arduino 没有 USB 接口,到适配器的电线也会很短。正如你所说,我认为这主要是复制粘贴代码,从官方文档和示例开始。
      猜你喜欢
      • 2021-12-07
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2020-01-01
      相关资源
      最近更新 更多