目录
- 一、引言:为什么必须区分波特率与比特率?
- 二、通信系统的三个层次视角(非常关键)
- 三、波特率(Baud Rate)的本质
- 3.1 定义
- 3.2 什么是码元(Symbol)?
- 3.3 波特率回答的问题是:
- 四、比特率(Bit Rate)的本质
- 4.1 定义
- 4.2 比特率回答的问题是:
- 五、波特率与比特率的统一数学关系
- 六、编码与调制:决定二者是否相等的关键
- 6.1 二进制编码系统(最简单)
- 6.2 多进制调制系统(现代通信)
- 七、UART / RS485:最容易混淆但最经典的案例
- 7.1 UART 的信号特性
- 7.2 为什么 UART 中二者数值相等?
- 7.3 帧结构与时间本质
- 位时间:
- 帧时间:
- 7.4 有效数据速率
- 八、I²C:没有波特率,但常被“类比”
- 8.1 I²C 的本质
- 8.2 工程近似
- 8.3 I²C 速率等级
- 九、SPI:只有比特率的系统
- 十、CAN:为什么官方只谈比特率?
- 十一、无线通信:必须严格区分
- 十一、核心定义速查
- 十二、通用关系公式(必背)
- 十三、各通信接口速率定义对照表
- 十四、UART / RS485 工程速查
- 14.1 UART 位结构(8N1)
- 14.2 位时间 / 码元时间
- 14.3 帧时间
- 例:9600 baud,8N1
- 14.4 有效数据速率
- 十五、I²C / SPI / CAN 速率速查
- I²C
- SPI
- CAN
- 十六、什么时候用哪个单位?
- 十七、常见错误速查
- 十八、工程应用中的正确使用原则
- 十九、常见工程误区总结
- 二十、终极工程总结
一、引言:为什么必须区分波特率与比特率?
在嵌入式和通信工程中,我们每天都会接触到如下参数:
- 串口:9600、115200
- CAN:500 kbps、1 Mbps
- I²C:100 kHz、400 kHz
- SPI:10 MHz、20 MHz
这些数值经常被统称为“通信速度”,但它们描述的对象并不完全相同。
如果不区分:
- 会算错一帧数据时间
- 会配置错误超时参数
- 会误判系统吞吐能力
- 在面试中会被追问“原理不清楚”
而这些问题的根源,几乎都集中在两个概念上:
波特率(Baud Rate)与比特率(Bit Rate)
二、通信系统的三个层次视角(非常关键)
理解这两个概念,必须先建立一个分层视角:
| 层次 | 关注点 | 示例 |
|---|---|---|
| 物理层 | 信号如何变化 | 电平、相位、幅度 |
| 编码 / 调制 | 一个符号能表示什么 | NRZ、QPSK、QAM |
| 信息层 | 实际传输多少数据 | bit、字节、帧 |
👉波特率属于“物理层 / 信号层”
👉比特率属于“信息层 / 数据层”
三、波特率(Baud Rate)的本质
3.1 定义
波特率定义为:
单位时间内传输的码元(Symbol)数量
- 单位:baud
- 描述的是:信号状态变化的速度
3.2 什么是码元(Symbol)?
码元不是“比特”,而是:
通信系统中一次可区分的信号状态
例如:
- 高 / 低电平
- 不同相位
- 不同幅度
- 或它们的组合
3.3 波特率回答的问题是:
“信号每秒变化多少次?”
而不是:
“每秒传多少数据?”
四、比特率(Bit Rate)的本质
4.1 定义
比特率定义为:
单位时间内传输的比特(Bit)数量
- 单位:bit/s(bps)
- 描述的是:信息传输能力
4.2 比特率回答的问题是:
“系统每秒能传输多少信息?”
五、波特率与比特率的统一数学关系
在所有通信系统中,二者的关系都可以归结为一个公式:
比特率 = 波特率 × 每码元所携带的比特数这条公式是通信工程中的核心定律之一。
六、编码与调制:决定二者是否相等的关键
6.1 二进制编码系统(最简单)
- 每个码元只有 2 种状态
- 每码元 = 1 bit
示例:
- UART(NRZ)
- RS485(NRZ)
- BPSK
结论:
比特率 = 波特率6.2 多进制调制系统(现代通信)
| 调制方式 | 每码元携带比特 |
|---|---|
| QPSK | 2 bit |
| 16QAM | 4 bit |
| 64QAM | 6 bit |
结论:
比特率 > 波特率📌 这正是 Wi-Fi、LTE、5G 高速的根本原因。
七、UART / RS485:最容易混淆但最经典的案例
7.1 UART 的信号特性
- NRZ 编码
- 高电平 / 低电平
- 一个码元只能表示一个 bit
7.2 为什么 UART 中二者数值相等?
1 码元 = 1 bit ⇒ 9600 baud = 9600 bit/s(数值)⚠️ 但这只是特例结果,不是定义。
7.3 帧结构与时间本质
以8N1为例:
| 字段 | 位数 |
|---|---|
| 起始位 | 1 |
| 数据位 | 8 |
| 停止位 | 1 |
| 合计 | 10 |
位时间:
T_bit = 1 / BaudRate帧时间:
T_frame = 10 × T_bit👉帧时间就是“每一个比特时间首尾相加”
7.4 有效数据速率
有效比特率 = 波特率 × 数据位 / 总位数9600,8N1:
= 9600 × 8 / 10 = 7680 bit/s八、I²C:没有波特率,但常被“类比”
8.1 I²C 的本质
- 同步通信
- 使用 SCL 时钟
- 每个时钟周期传 1 bit
👉I²C 严格意义上没有“波特率”
8.2 工程近似
由于:
1 个时钟周期 = 1 bit工程上常说:
I²C 速率 ≈ 比特率8.3 I²C 速率等级
| 模式 | SCL |
|---|---|
| Standard | 100 kHz |
| Fast | 400 kHz |
| Fast Plus | 1 MHz |
| High-Speed | 3.4 MHz |
⚠️ ACK、地址、仲裁会降低有效吞吐。
九、SPI:只有比特率的系统
- 同步通信
- 时钟边沿传输数据
- 不存在“码元”概念
SPI Clock = Bit RateSPI 的“快”,来自:
- 无起始位
- 无停止位
- 无仲裁
- 无地址阶段
十、CAN:为什么官方只谈比特率?
CAN 的特点:
- 位同步
- 差分信号
- 非传统“符号”概念
- 位填充机制
因此:
CAN 标准中只有 Bit Rate,没有 Baud Rate
例如:
- 500 kbps
- 1 Mbps
⚠️ 有效数据率 < 标称比特率。
十一、无线通信:必须严格区分
以 LoRa / Wi-Fi 为例:
- 符号速率(Symbol Rate)
- 每符号 bit 数
- 数据率(Bit Rate)
Bit Rate = Symbol Rate × Bits per Symbol📌 在无线系统中:
混用 baud 和 bps 是严重错误
十一、核心定义速查
| 项目 | 波特率(Baud) | 比特率(Bit/s) |
|---|---|---|
| 含义 | 每秒码元数 | 每秒比特数 |
| 单位 | baud | bit/s(bps) |
| 描述对象 | 信号变化速度 | 信息传输速度 |
| 所属层次 | 物理层 | 信息层 |
| 是否必然相等 | ❌ 否 | ❌ 否 |
十二、通用关系公式(必背)
比特率 = 波特率 × 每码元携带的比特数十三、各通信接口速率定义对照表
| 接口 | 速率参数名称 | 单位 | 是否有波特率 | 工程说明 |
|---|---|---|---|---|
| UART | Baud Rate | baud | ✅ | 1 码元 = 1 bit |
| RS485 | Baud Rate | baud | ✅ | 与 UART 等价 |
| I²C | SCL 时钟 | Hz | ❌ | 1 时钟 = 1 bit |
| SPI | SCK 时钟 | Hz | ❌ | 时钟即比特率 |
| CAN | Bit Rate | bit/s | ❌ | 官方只用 bps |
| CAN FD | Bit Rate | bit/s | ❌ | 数据段更高 |
| LoRa | Symbol Rate / Data Rate | baud / bit/s | ✅ | 二者不相等 |
| Wi-Fi / LTE | Symbol Rate / Bit Rate | baud / bit/s | ✅ | 必须区分 |
十四、UART / RS485 工程速查
14.1 UART 位结构(8N1)
| 字段 | 位数 |
|---|---|
| 起始位 | 1 |
| 数据位 | 8 |
| 停止位 | 1 |
| 合计 | 10 |
14.2 位时间 / 码元时间
T_bit = T_symbol = 1 / BaudRate14.3 帧时间
T_frame = 总位数 × T_bit例:9600 baud,8N1
T_bit ≈ 104.17 μs T_frame ≈ 1.04 ms14.4 有效数据速率
有效比特率 = 波特率 × 数据位 / 总位数9600 × 8 / 10 = 7680 bit/s十五、I²C / SPI / CAN 速率速查
I²C
| 模式 | SCL | 等效速率 |
|---|---|---|
| Standard | 100 kHz | 100 kbps |
| Fast | 400 kHz | 400 kbps |
| Fast Plus | 1 MHz | 1 Mbps |
| High-Speed | 3.4 MHz | 3.4 Mbps |
⚠️ ACK、地址、仲裁降低有效速率
SPI
| 项目 | 说明 |
|---|---|
| 速率参数 | SCK 时钟 |
| 单位 | Hz |
| 关系 | SCK = 比特率 |
| 特点 | 无协议开销 |
CAN
| 类型 | 比特率 |
|---|---|
| CAN 2.0 | 10 kbps ~ 1 Mbps |
| CAN FD | 数据段更高 |
⚠️ 位填充 + 仲裁 → 有效速率下降
十六、什么时候用哪个单位?
| 场景 | 用哪个 |
|---|---|
| 串口配置 | baud |
| 寄存器配置 | baud |
| 协议超时 | baud |
| 吞吐量计算 | bit/s |
| 总线带宽 | bit/s |
| 无线通信 | 二者都要 |
十七、常见错误速查
| 说法 | 是否正确 |
|---|---|
| 9600 就是 9600 bps | ⚠️ 仅 UART |
| 波特率就是速度 | ❌ |
| SPI 有波特率 | ❌ |
| CAN 用 baud | ❌ |
| LoRa 波特率=比特率 | ❌ |
十八、工程应用中的正确使用原则
| 场景 | 应使用 |
|---|---|
| 串口配置 | 波特率 |
| 协议定时 | 波特率 |
| 帧时间计算 | 波特率 |
| 吞吐能力 | 比特率 |
| 通信选型 | 比特率 |
| 无线系统 | 二者都要 |
十九、常见工程误区总结
- ❌ “9600 就是 9600 bps”
- ❌ “波特率就是通信速度”
- ❌ “超时按 bps 算”
- ❌ “提高波特率就一定更快”
二十、终极工程总结
- 波特率:信号变化速度
- 比特率:信息传输能力
- 是否相等,取决于编码方式
- UART 是特例,不是规则
- 本节内容已经全部介绍完毕,希望通过这篇文章,大家对波特率与比特率有了更深入的理解和认识。
- 感谢各位的阅读和支持,如果觉得这篇文章对你有帮助,请不要吝惜你的点赞和评论,这对我们非常重要。再次感谢大家的关注和支持!点我关注❤️