手册中提到,“支持小数波特率”,这使得波特率的精度更高了
UART 的波特率发生器支持"整数 + 小数"分频,用任意系统时钟都能逼近标准波特率,把误差压到千分之几甚至零。
UART 是异步通信,波特率由本地时钟分频得到
但标准波特率9600,115200…和常见 MCU 时钟8M/16M/25M经常不是整数倍关系。比如:
16 MHz 想出 115200:DIV = 16000000 / (16×115200) ≈ 8.6806
纯整数分频只能取 8 或 9 → 实际波特率 125000 或 111111,误差 8.5%,超过 UART 容限,一般 ±2~3%,稳妥 ≤1%,收数据必乱帧。
用小数分频:整数 8 + 小数 0.6806×64≈44/64 → DIV=8.6875,回算 115207,误差 0.006%。
在不换晶振的前提下,让任意主频都能高精度凑出标准波特率
|
|