一、波特率与空中速率基础概念

1.1 什么是波特率?

波特率,说白了就是「每秒能传多少个符号」。

我刚开始做无线通信那会儿,总把波特率和比特率搞混。后来一个老工程师跟我说了句话,我记到现在——「波特率是车,比特率是货」。一辆车可以拉一箱货,也可以拉两箱货,关键看你用什么调制方式。

举个例子:

  • 如果我用最简单的OOK(开关键控),一个符号只能表示1个比特
  • 如果我用QPSK,一个符号可以表示2个比特
  • 如果我用16QAM,一个符号可以表示4个比特

所以波特率的单位是 Baud(波特),不是bps。很多人写文档时把9600bps写成9600波特,其实是不严谨的。

核心公式:
比特率 = 波特率 × log₂(M)
其中M是调制阶数,比如QPSK的M=4,16QAM的M=16

1.2 什么是空中速率?

空中速率,也叫射频速率、无线速率。它指的是数据在无线信道上实际传输的物理速率。

嗯,这里要注意:空中速率 ≠ 用户感受到的速率。

我在项目中遇到过好几次这样的场景——客户说「你们标称空中速率250kbps,为什么我实际传文件只有50kbps?」。原因很简单:空中速率是物理层的裸速率,还没算上协议开销、重传、前导码、CRC校验这些东西。

空中速率通常由以下几个因素决定:

  • 调制方式:BPSK、QPSK、16QAM...阶数越高,速率越快
  • 编码效率:比如3/4卷积码,实际有效数据只有3/4
  • 扩频因子:LoRa等扩频技术中,扩频因子越大,速率越慢
  • 信道带宽:带宽越宽,理论上速率越高
我的经验:
实际有效吞吐量 ≈ 空中速率 × 0.6 ~ 0.8
这个系数取决于协议栈的效率。我做过一个项目,协议栈写得烂,实际吞吐量只有空中速率的30%,后来重写了MAC层才提到65%。

1.3 为什么它们需要匹配?

这个问题,我用一个真实案例来说明。

几年前我做一款数传电台,MCU的UART波特率设成了115200bps,但射频模块的空中速率只有10kbps。你想想看,MCU一秒能发115200比特的数据过来,但射频模块一秒只能发10000比特出去。结果是什么?

缓冲区爆了。

数据不停地丢,重传,再丢,再重传。整个系统就像堵车的高速公路——入口的车流太大,出口的车道太窄,全堵在缓冲区里。

反过来也一样。如果空中速率远大于波特率,射频模块大部分时间在空转,浪费功耗和频谱资源。

所以,匹配的核心原则就一句话:

波特率 ≤ 空中速率 × 协议效率
否则一定会丢数据。这不是「可能」的问题,是「必然」的问题。

我曾经吃过这个亏。一个户外监测项目,设备装好了,数据就是传不上去。我查了三天,最后发现是波特率设成了921600,空中速率只有250kbps,中间还加了2层协议封装。算下来有效吞吐量不到100kbps,921600的数据流进来,不丢才怪。

1.4 知识体系总览

下面这张图,是我做课程时画的。它把波特率、空中速率、以及它们之间的关系串在了一起:

波特率与空中速率匹配知识体系 波特率 UART串口速率 单位:Baud 典型值:9600~921600 决定因素:MCU时钟 协议栈处理能力 空中速率 射频物理层速率 单位:bps 典型值:1k~2Mbps 决定因素:调制方式 编码效率、带宽 匹配原则 波特率 ≤ 空中速率 × 协议效率 协议效率 = 有效数据 / 总传输数据 通常取 0.5 ~ 0.8 数据流方向 不匹配的后果:数据丢失、重传风暴、系统不稳定

1.5 常见误区

误区 正确理解
波特率越高越好 不一定,要看空中速率能不能跟上
空中速率就是实际速度 不是,还要扣除协议开销
波特率和比特率是一回事 只有二进制调制时才相等
匹配了就不会丢数据 还要考虑缓冲区大小、流量控制
一个小技巧:
我习惯在设计初期就留出30%的余量。比如空中速率100kbps,我最多让波特率跑到70kbps。这样即使协议栈有额外开销,或者信号不好导致重传,系统也不会崩。

好了,这一章的内容就到这里。波特率和空中速率的概念搞清楚了,后面我们才能谈怎么算、怎么配、怎么调。下一章我会讲具体的计算公式和实际案例。


公众号:蓝海资料掘金营,微信deep3321