usart波特率为9600和115200时,发送一句话所耗费的时间分别是多少
一、核心公式
- 波特率含义:波特率(如 9600、115200)表示每秒传输的 “码元数”,在串口异步通信中,1 个码元对应 1 个二进制位(bit),因此波特率 = 每秒传输的比特数(bps)。
- 单个字符的比特数:默认配置下,1 个字符(如 'A'、数字 '1')的传输需要 10 个比特(1 位起始位 + 8 位数据位 + 1 位停止位,无校验位)。
- 耗时计算:单个字符耗时 = 单个字符的比特数 ÷ 波特率总耗时 = 单个字符耗时 × 字符总数(含字符串末尾的换行符
\r\n
,若有)
二、具体场景计算(以 “Hello World\r\n” 为例)
先统计字符数:“Hello World” 是 11 个字符,加上换行符 \r\n
(2 个字符),总字符数 = 13 个。
1. 波特率 9600 bps
- 单个字符耗时 = 10 bit ÷ 9600 bit/s ≈ 0.0010417 秒 = 1.0417 毫秒(ms)
- 总耗时 = 1.0417 ms × 13 ≈ 13.54 毫秒(ms)
2. 波特率 115200 bps
- 单个字符耗时 = 10 bit ÷ 115200 bit/s ≈ 0.0000868 秒 = 86.8 微秒(μs)
- 总耗时 = 86.8 μs × 13 ≈ 1128.4 微秒(μs) ≈ 1.13 毫秒(ms)
三、不同字符数的耗时参考(通用计算表)
若发送的字符串长度不同,可按以下表格快速估算(默认 10 bit / 字符):
波特率 | 单个字符耗时 | 10 字符耗时 | 20 字符耗时 | 50 字符耗时 |
---|---|---|---|---|
9600 bps | ~1.04 ms | ~10.4 ms | ~20.8 ms | ~52 ms |
115200 bps | ~86.8 μs | ~868 μs | ~1.74 ms | ~4.34 ms |
四、注意事项
- 校验位影响:若开启奇校验 / 偶校验(增加 1 位校验位),单个字符的比特数会变为 11 bit,耗时会增加 10%(例如 9600 bps 时单个字符耗时变为~1.146 ms)。
- 停止位影响:若设置 2 位停止位,单个字符的比特数变为 11 bit,耗时同样增加 10%。
- 实际耗时偏差:以上为理论值,实际耗时会因 CPU 处理速度(如是否在中断中发送、是否有其他任务抢占)略有偏差,但偏差通常小于 1%,可忽略不计。
简单来说,波特率越高,传输相同长度的字符串耗时越短 ——115200 波特率的传输速度约为 9600 波特率的 12 倍(115200 ÷ 9600 = 12),与上述示例中 “13.54 ms ÷ 1.13 ms ≈ 12” 的比例一致。