MSP430 UART 波特率
计算 MSP430 UART 波特率寄存器:x1xx/x4xx USART 的 UxBR0、UxBR1、UxMCTL(按 TI 手册逐位调制算法)及逐位发送误差;x2xx/x5xx USCI_A 的 UCBRx、UCBRSx、UCBRFx。
输入参数
计算结果
点按结果可复制数值;支持输入 4.7k、100n、2u2 等工程写法
计算公式
USART:N = ⌊BRCLK / 波特率⌋,UxBR0 = N & 0xFF,UxBR1 = N >> 8
第 i 位误差:Ei = [ (波特率/BRCLK)·((i+1)·N + Σj≤i mj) − (i+1) ] × 100%,逐位选 mi ∈ {0,1} 使 |Ei| 最小
UxMCTL = m7…m0(m0 用于起始位,第 8 位以后循环使用)
USCI_A 过采样:UCBRx = ⌊N/16⌋,UCBRFx = round((N/16 − ⌊N/16⌋)·16)
USCI_A 低频:UCBRx = ⌊N⌋,UCBRSx = round((N − ⌊N⌋)·8)
原理与说明
MSP430 的 UART 用一个整数分频器加"调制"产生波特率:分频比 BRCLK/波特率 往往不是整数,调制寄存器决定每一位额外多计 1 个 BRCLK,从而让累计位时间尽量接近理想值。
USART(MSP430x1xx / x4xx,SLAU049 第 13 章)
- UxBR1:UxBR0 为 16 位整数分频,必须 ≥ 3。UxMCTL 的 8 个调制位依次作用于每个字符的第 0(起始位)到第 7 位,第 8 位以后循环。
- 本工具按手册给出的方法逐位选择调制位,并列出穷举 256 种 UxMCTL 的最优值以及手册表 13-2 的推荐值供对照。手册表中部分推荐值(如 1.048576 MHz / 9600 的 0x03)并非误差最小的组合,两者都能可靠通信。
- 发送误差一般应控制在 ±5% 以内(两端误差之和最好 < ±5%)。用 32.768 kHz 手表晶振时 9600 bit/s 的位误差已达 ±15–20%,仅在对端容差较好时可用。
USCI_A(x2xx / x5xx)
- N ≥ 16 时推荐过采样模式(UCOS16 = 1),用 UCBRFx 进行 1/16 位调制;低频模式用 UCBRSx 做 1/8 调制。
原 eetree.cn 工具界面把波特率单位误标为 kHz,本工具已修正,并增加 USCI 模式与逐位误差表。