跳至内容

UART 分频

整数分频、BRR、实际波特率与误差。

正在准备工具…

分频关系

UART 的波特率来自外设时钟和过采样:

USARTDIV=fclkO⋅b,BRR≈O⋅USARTDIV \mathrm{USARTDIV}=\frac{f_{\mathrm{clk}}}{O\cdot b},\qquad \mathrm{BRR}\approx O\cdot\mathrm{USARTDIV}

OO 为 8 或 16 倍过采样,bb 为目标波特率。整数 BRR 会产生量化误差,实际波特率为:

bactual=fclkBRR b_{\mathrm{actual}}=\frac{f_{\mathrm{clk}}}{\mathrm{BRR}}

72 MHz、115200 baud、16 倍过采样时,USARTDIV 为 39.0625,BRR 取 625,实际波特率正好是 115200。

误差

BRR 只能取整数,误差来自时钟与目标值的比值。一般把相对误差控制在 2% 以内,长帧、低波特率或多机通信时要求更严。页面显示 8N1 单字节时间,便于估算帧间隔和 DMA 缓冲。

8 倍过采样时,USARTDIV 的计算相同,但 BRR 的位域编码随 USART 型号变化;页面给出整数分频值,寄存器位域仍按具体手册填写。

边界

外设时钟、目标波特率和过采样必须为正;BRR 超出 16 位寄存器范围时报错。页面不包含时钟树抖动、自动波特率检测和同步模式。