Arduino 串行通信中的波特率
Yousef Zahid
2021年6月28日
如果理解基本概念并具有逻辑实现的诀窍,Arduino 编码就非常简单。本文讨论的这个概念将与波特率有关。大多数新手 Arduino 编码器对其所有程序和功能使用特定的波特率值,但不知道为什么使用值 9600
而不是另一个数字。这个值的特殊之处是什么,波特率的实际用途是什么?
波特率只是每秒信号或符号变化的速率。仅从定义上很难理解。更直观的解释会更好。
让我们考虑图 1 中的条形图。假设每个块的周期为 1 秒。随着周期即将结束,条形图的值会发生突然变化。对于第一个柱,它的值突然增加。这种每秒的变化称为波特率,在这种特殊情况下波特率为 1。信号每秒变化一次。
对于这个新图表,请考虑信号在 2 月之前变化两次的 1 月份:这表示波特率为 2。这也意味着一个端口每秒最多可以传输大约 2 位。如果波特率增加超过 76800
单位,则需要减少电线长度以获得最佳性能。
波特率和比特率之间存在细微差别。比特率是每秒比特的传输速率,而波特率是每秒信号或符号的变化。比特率可以大于波特率,但反之则不然。波特率与电子产品有关,尤其是涉及 Arduino 开发板的 DIY 项目。
要将其用作 C++ 编程中的全局函数,我们需要使用 #define BAUDRATE
分配一个预期值以供稍后使用。如果你想以更快的速度发送和接收数据,那么你必须相应地增加这个值;然而,对于微控制器,典型值为 9600
。
现在选择标准取决于很多因素。首先,如果要提高比特率,必须提高波特率。
过采样标准必须符合波特率;即使可以将过采样率从 16X
更改为 8X
,反之亦然,这需要严格的容差时钟,但仍可能存在错误。降低速率会增加错误,并且起始位边沿可能与接收到的位边沿不匹配。