对于波特率的计算,想必大家都非常清楚,在51时代,我们常用11.0592MHz晶振或其整数倍的晶振来实现精确的波特率。但是随着ARM的出现,以及ARM外设的丰富、倍频的应用,想获取精确的波特率好像不容易实现了,特别是在需要使用USB的情况下,我们必须选择能够参数480MHz频率的晶振,那么12MHz晶振就成为我们不二的选择,波特率计算公式:
BPS = PCLK / (16×(256xUnDLM+UnDLL))
通过以上的计算公式,我们不难发现,要想获取精确的波特率是不可能的,虽然在速度不高的情况下,我们可以取近似值也可以进行正常的串口通信,但是如果要在波特率特别高的情况下,我们还用这种方法是不能正常通信的。那么怎么来解决这个问题呢?
其实厂商在设计芯片的时候已经为我们想到了,在选择波特率时候,当实际波特率与目标波特率之间存在的误差在1.1%范围内是可以正常通信的。所以,我们只要能够用一个寄存器来实现波特率的误差调节,使其误差在允许的范围以内就可以了。为实现这一目标,NXP设计了一个叫做小数分频的寄存器FDR。
|