困惑,求各位大侠答疑解惑。
430串口波特率问题:
若波特率发生器的输入频率BRCLK不是所需波特率的整数倍,带有一小数,则
整数部分写UBR 寄存器,小数部分由调整寄存器UxMCTL 的内容反映。波特率由以下
公式计算:
波特率=BRCLK/(UBR+(M7+M6+…M0)/8)
例如:波特率=2400, 模块时钟=32768Hz ,其分频因子为13.65
由于分频因子不一定正好为整数,因此对小数部分必须通过调整寄存器来进行调整,在此
可插进5个“1”来满足一帧数据的65%的误差。但即使这样也不可能完全消除这种误差,
可插进5个“1”来满足一帧数据的65%的误差。这句话怎么讲,什么意思?
A:
UBR00 = 0x13; // 32768/2400=13.65
UBR10 = 0x00; //
UMCTL0 = ??; 等于到少 // Modulation
B:
UBR00 = 0x03; // 32768/9600=3.41
UBR10 = 0x00; //
UMCTL0 = 0X4A; 0X4A是怎么来的 // Modulation
C:
UBR00 = 0x23; 还是0x22 // 4M/115200=34.722
UBR10 = 0x00; //
UMCTL0 = ??; 等于多少 // Modulation
|