UART 波特率误差计算器
更新时间:2026-10-25
单片机配串口前的核对工具:输入外设时钟频率与目标波特率,自动算出 BRR 寄存器值(整数 + 小数部分)、实际波特率与误差百分比,误差是否落在 2% 窗口内红绿灯一目了然;底部一览表同时列出全部常用波特率在当前时钟下的误差,超标行标红。纯前端运行,数据不上传。
功能
- BRR 求解:按
USARTDIV = fCK / (16 × Baud)(或 OVER8=1 时除以 8)算出分频系数,编码为 STM32 风格的 BRR 寄存器值(高 12 位DIV_Mantissa+ 低 4 位DIV_Fraction),同时给出十六进制形式。 - 误差判定:由取整后的分频系数反推实际波特率,给出带符号误差百分比,绝对值 <2% 亮绿灯、≥2% 亮红灯。
- 双过采样模式:支持 16 倍过采样(默认)与 8 倍过采样(OVER8=1,小数部分只用 3 位)切换,方便对比两种模式下的误差差异。
- 误差一览表:9600~921600 八个常用波特率各一行,当前选定目标高亮,超标行整行标红;分频系数小于 1(波特率过高)时明确标「不可用」。
- 常用预设:时钟 8/12/16/48/72/168 MHz、波特率 9600~921600 一键填入,也支持任意自定义值。
为什么会有误差
UART 的波特率来自对外设时钟的定点分频,分频系数只能取「整数 + 有限精度小数」的离散值——当时钟频率不是目标波特率的整数倍时,实际波特率必然偏离名义值。时钟越低、目标波特率越高,量化步长越大,误差越明显;通信双方的误差叠加(再加上晶振本身的 ppm 偏差)超过约 2% 时,采样点就会漂出码元中心,表现为间歇性乱码。
配套阅读
- STM32F103C8T6 参考笔记 —— 内含 XSim 复现 USART 波特率发生器的实测实验:36/72 MHz 双 APB 域跑 115200,误差 −0.161% 与 +0.006%
- 进制与位运算转换器 —— 算出的 BRR 值要拆整数/小数位段时用它
- 单位换算器 —— 频率与周期、带宽单位互转
一句话总结
串口配 BRR 前的核对器:给时钟频率和目标波特率,自动算 USARTDIV、编码成 BRR 寄存器值、反推实际波特率并按 2% 阈值红绿灯判定,一览表同时扫完全部常用波特率,超标的当场标红——高波特率乱码问题在写代码之前就拦住。